<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Java 異常教程 > 原文: [https://javabeginnerstutorial.com/core-java-tutorial/java-exceptions/](https://javabeginnerstutorial.com/core-java-tutorial/java-exceptions/) Java 中的異常用于處理錯誤或程序正常流程中發生的任何其他異常事件。 在 Java 中可以通過多種方式發生異常。 * 提供的數據不是預期的格式(例如`int`而不是`String`)。 * 無法連接數據庫。 * 網絡連接丟失。 * 對象為空。 * ….. ## Java 異常層次結構 Java 中的每個異常都是`Exception`類的子類型,而`Exception`類又是`Throwable`的子類。 正如我們所知道的,Java 中所有對象均來自`Throwable`對象類,也來自`Object`類。 異常和錯誤是從`Throwable`派生的兩個不同的類。 錯誤代表的情況不是由于編程錯誤而發生,而是可能在程序執行時發生,這些都是 Java 程序無法處理且不應費心處理的異常行為。 JVM 內存不足是一種錯誤,可能在運行時發生。 ## 受檢與非受檢異常 ### 受檢異常 1. **受檢異常**是`Exception`的子類,但`RuntimeException`及其子類除外。 2. 受檢異常強制程序員處理可能引發的異常。 3. 當方法中發生受檢異常時,該方法必須捕獲異常并采取適當的措施,或者將異常傳遞給其調用方。 #### 示例 `IOException`異常。 ### 非受檢異常 1. **非受檢異常**是`RuntimeException`及其任何*子類*。 2. 編譯器不會強制程序員捕獲非受檢異常或在`throws`子句中聲明它。 3. 程序員甚至可能不知道會引發異常。 4. 受檢異常必須在編譯時捕獲。 5. 運行時異常不是必需的。 #### 示例 `ArrayIndexOutOfBounds`異常。 ## Java 異常處理 現在我們知道 Java 程序可以在任何時間(或任何位置)發生異常。 因此,我們需要知道如何處理這些異常。 處理異常是開發健壯的應用時必需的屬性。 處理異常意味著在發生異常時將程序的執行轉移到適當的處理器。 我們可以使用`try-catch`塊來處理異常。 **`try`**:`try`用于定義可能發生異常的代碼塊。 **`catch`**:`catch`用于匹配特定類型的異常。 一個`try`塊可能有多個`catch`子句。 **`finally`**:`finally`確定將在`try`塊之后始終執行的代碼塊。 即使在異常的情況下。 ```java try { throw new IOException(); } catch (IOException e) { // Handle only IO Exception // This block will get executed only in case of IOException }catch (Exception e) { // Handle only all other type of exception // This block will get executed in case of all exception except IOException }finally{ System.out.println("This block will get executed no matter exception occur or not"); } ``` *注意*:`try`子句不能沒有`catch`或`finally`塊而存在。 它們都是必需的。 ### 異常傳播 不需要處理`catch`塊中`try`塊引發的所有異常(因為它不是必需的塊)。 如果`catch`塊無法處理`try`塊引發的異常,它將傳播到調用此方法的方法中。 如果先前調用此方法的方法也無法處理該異常,則該異常將傳播到方法棧中的最后一個方法,除非某些方法處理該異常,否則它將以相同的方式傳播。 如果沒有方法在調用棧中處理它,則異常將觸底,而 JVM 將對其進行處理。 (感謝 Mohita 的建議) ## 備忘單 * **受檢**和**非受檢異常**是兩種類型的異常。 * 受檢異常是那些`Exception`類的子類型,但不包括擴展**運行時異常**的類。 * **錯誤**和**運行時異常**的子類型屬于非受檢異常。 * `finally`塊將始終在所有條件下調用。 * `System.exit()`是無法阻止`finally`塊執行的唯一方法,在這種情況下,JVM 將關閉。 * 還可以通過擴展`Exception`類來創建自定義異常。 * `Catch`塊應以最特殊到最一般的形式排序。 否則,編譯器將報錯無法訪問的代碼。 <https://www.youtube.com/embed/bpHcP14Onp4?start=1&amp;feature=oembed> <https://www.youtube.com/embed/bYY6SWnMpz4?start=1&amp;feature=oembed>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看