天天看點

強悍的異常處理-處理多個異常 | 帶你學《Java面向對象程式設計》之七十七

上一篇:出錯保障局-異常處理機制 | 帶你學《Java面向對象程式設計》之七十六

【本節目标】

通過閱讀本節内容,你将了解到catch塊中捕獲指定的異常時具有的風險,并學會使用多個catch捕獲多個異常的辦法來解決這個問題。

處理多個異常

很多時候在程式執行的過程之中可能會産生若幹個異常,那麼這種情況下也可以使用多個catch進行異常的捕獲。假設通過初始化的參數來進行兩個數學計算數字的設定。

public class JavaDemo{
    public static void main(String args[]) {
        System.out.println("【1】*****程式開始執行*****") ; 
        try {
              int x = Integer.parseInt(args [0]) ;
              int y = Integer.parseInt(args [1]) ;
              System.out.println("【2】數學計算:" +(x / y)) ;   
        } catch (ArithmeticException e) {
              e.printStackTrace() ;
        }finally {
              System.out.println("【F】不管是否出現異常,我都會執行。") ;
        }
        System.out.println("【3】*****程式執行完畢*****") ;    
   }     
}           

對于此時的程式就有可能産生三類異常:

  • 【未處理】程式執行的時候沒有輸入初始化參數(java JavaDemo):

    java.lang.ArrayIndexOutOfBoundsException;

程式執行結果:

圖一 沒有輸入初始化參數異常

  • 【未處理】輸入時的資料不是數字(java JavaDemo a b):

    java.lang.NumberFormatException;

圖二 輸入的資料不是數字異常

  • 【已處理】輸入的被除數為0(java JavaDemo 10 0):

    Java.lang.ArithmeticException;

強悍的異常處理-處理多個異常 | 帶你學《Java面向對象程式設計》之七十七

圖三 已處理的被除數為0異常

現在即便有了異常處理語句,但是如果沒有正确的異常捕獲,那麼程式也會導緻中斷(finally的代碼依然執行),在這樣的情況下就必須進行多個異常的捕獲。

範例:修改程式代碼

public class JavaDemo{
    public static void main(String args[]) {
        System.out.println("【1】*****程式開始執行*****") ; 
        try {
              int x = Integer.parseInt(args [0]) ;
              int y = Integer.parseInt(args [1]) ;
              System.out.println("【2】數學計算:" +(x / y)) ;   
         } catch (ArithmeticException e) {
              e.printStackTrace() ;
         }catch (NumberFormatException e) {
              e.printStackTrace() ;
         }catch (ArrayIndexOutOfBoundsException e) {
              e.printStackTrace() ;
         }finally {
              System.out.println("【F】不管是否出現異常,我都會執行。") ;
         }
         System.out.println("【3】*****程式執行完畢*****") ;    
    }     
}           

此時開發者都已經明确的知道了有哪些異常了,那麼又何必非要用異常處理呢?直接進行判斷就可以了。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:知其是以然-剖析異常處理流程 | 帶你學《Java面向對象程式設計》之七十八 更多Java面向對象程式設計文章檢視此處