<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國際加速解決方案。 廣告
                一個 try 代碼塊后面跟隨多個 catch 代碼塊的情況就叫多重捕獲。 多重捕獲塊的語法如下所示: ``` try{ // 程序代碼 }catch(異常類型1 異常的變量名1){ // 程序代碼 }catch(異常類型2 異常的變量名2){ // 程序代碼 }catch(異常類型3 異常的變量名3){ // 程序代碼 } ``` 上面的代碼段包含了 3 個 catch塊。 可以在 try 語句后面添加任意數量的 catch 塊。 如果保護代碼中發生異常,異常被拋給第一個 catch 塊。 如果拋出異常的數據類型與 ExceptionType1 匹配,它在這里就會被捕獲。 如果不匹配,它會被傳遞給第二個 catch 塊。 如此,直到異常被捕獲或者通過所有的 catch 塊。 <br> <br> **異常案例一:** ``` package day02try; public class day04Excption { public static void main(String args[]) { try { int a = args.length; System.out.println("a = " + a); int b = 42 / a; int c[] = { 1 }; c[42] = 99; } catch(ArithmeticException e) { System.out.println("Divide by 0: " + e); } catch(ArrayIndexOutOfBoundsException e) { System.out.println("Array index oob: " + e); } System.out.println("After try/catch blocks."); } } ``` 該程序在沒有命令行參數的起始條件下運行導致被零除異常,因為a為0。如果你提供一個命令行參數,它將幸免于難,把a設成大于零的數值。但是它將導致ArrayIndexOutOf?BoundsException異常,因為整型數組c的長度為1,而程序試圖給c\[42\]賦值。 下面是運行在兩種不同情況下程序的輸出: >>>java MultiCatch a = 0 Divide by 0: java.lang.ArithmeticException: / by zero?After try/catch blocks. >>>java MultiCatch TestArg a = 1 Array index oob: java.lang.ArrayIndexOutOfBoundsException?After try/catch blocks. <br> <br> 當你用多catch語句時,記住異常子類必須在它們任何父類之前使用是很重要的。這是因為運用父類的catch語句將捕獲該類型及其所有子類類型的異常。這樣,如果子類在父類后面,子類將永遠不會到達。而且,Java中不能到達的代碼是一個錯誤。例如,考慮下面的程序: ``` class SuperSubCatch { ? ? public static void main(String args\[\]) { ? ? ? ? try { ? ? ? ? ? ? int a = 0; ? ? ? ? ? ? int b = 42 / a; ? ? ? ? } catch(Exception e) { ? ? ? ? ? ? System.out.println("Generic Exception catch."); ? ? ? ? } ? ? ? ? /\* This catch is never reached because ? ? ? ? ArithmeticException is a subclass of Exception. \*/ ? ? ? ? catch(ArithmeticException e) { // ERROR - unreachable ? ? ? ? ? ? System.out.println("This is never reached."); ? ? ? ? } ? ? } } ``` 如果你試著編譯該程序,你會收到一個錯誤消息,該錯誤消息說明第二個catch語句不會到達,因為該異常已經被捕獲。因為ArithmeticException 是Exception的子類,第一個catch語句將處理所有的面向Exception的錯誤,包括ArithmeticException。這意味著第二個catch語句永遠不會執行。為修改程序,顛倒兩個catch語句的次序
                  <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>

                              哎呀哎呀视频在线观看