<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java 捕獲多個異常 > 原文: [https://www.programiz.com/java-programming/multiple-exceptions](https://www.programiz.com/java-programming/multiple-exceptions) #### 在本教程中,我們將借助示例學習如何在 Java 中處理多個異常。 在 Java 7 之前,即使存在代碼冗余,我們也必須針對不同類型的異常編寫多個異常處理代碼。 讓我們舉個例子。 ### 示例 1:多個`catch`塊 ```java class Main { public static void main(String[] args) { try { int array[] = new int[10]; array[10] = 30 / 0; } catch (ArithmeticException e) { System.out.println(e.getMessage()); } catch (ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } } ``` **輸出** ```java / by zero ``` 在此的示例可能會發生兩個異常: * `ArithmeticException`,因為我們試圖將數字除以 0。 * `ArrayIndexOutOfBoundsException`,因為我們已經聲明了一個新的整數數組,其數組邊界為 0 到 9,并且我們試圖為索引 10 分配一個值。 我們正在兩個`catch`塊中打印出異常消息,即重復代碼。 賦值運算符`=`的關聯性是從右到左,因此首先將`ArithmeticException`與消息 <samp>/零一起拋出</samp>。 * * * ## 在`catch`塊中處理多個異常 在 Java SE 7 和更高版本中,我們現在可以在單個`catch`塊中捕獲多種類型的異常。 `catch`塊可以處理的每種異常類型都使用豎線或豎線`|`分隔。 其語法為: ```java try { // code } catch (ExceptionType1 | Exceptiontype2 ex) { // catch block } ``` ### 示例 2:多`catch`塊 ```java class Main { public static void main(String[] args) { try { int array[] = new int[10]; array[10] = 30 / 0; } catch (ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } } ``` **輸出**: ```java / by zero ``` 在單個`catch`塊中捕獲多個異常可以減少代碼重復并提高效率。 編譯此程序時生成的字節代碼將比具有多個`catch`塊的程序小,因為沒有代碼冗余。 **注意**:如果`catch`塊處理多個異常,則`catch`參數隱式為`final`。 這意味著我們不能分配任何值來捕獲參數。 * * * ## 捕獲基本異常 當在單個`catch`塊中捕獲多個異常時,該規則將被通用化為`Exception`。 這意味著,如果`catch`塊中存在異常層次結構,我們只能捕獲基本異常,而不是捕獲多個特殊異常。 舉個例子: ### 示例 3:僅捕獲基本異常類 ```java class Main { public static void main(String[] args) { try { int array[] = new int[10]; array[10] = 30 / 0; } catch (Exception e) { System.out.println(e.getMessage()); } } } ``` **輸出**: ```java / by zero ``` 我們知道所有異常類都是`Exception`類的子類。 因此,我們不必捕獲多個專門的異常,而只需捕獲`Exception`類。 * * * 如果已經在`catch`塊中指定了基本異常類,則不要在同一`catch`塊中使用子異常類。 否則,我們會得到一個編譯錯誤。 舉個例子: ### 示例 4:捕獲基類和子異常類 ```java class Main { public static void main(String[] args) { try { int array[] = new int[10]; array[10] = 30 / 0; } catch (Exception | ArithmeticException | ArrayIndexOutOfBoundsException e) { System.out.println(e.getMessage()); } } } ``` **輸出**: ```java Main.java:6: error: Alternatives in a multi-catch statement cannot be related by subclassing ``` 在此示例中,`ArithmeticException`和`ArrayIndexOutOfBoundsException`都是`Exception`類的子類。 因此,我們得到一個編譯錯誤。
                  <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>

                              哎呀哎呀视频在线观看