天天看點

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

上一篇:全能的枚舉類 | 帶你學《Java面向對象程式設計》之七十五

【本節目标】

通過閱讀本節内容,你将了解到異常的基本定義,以及處理異常的基本方法,學會使用try...catch...finally文法實作異常的捕獲與處理。

Java語言提供的最強大的支援就在于異常的處理操作上。

認識異常對程式的影響

異常指的是導緻程式中斷執行的一種指令流。那麼下面首先來觀察沒有異常産生的程式執行結果。

範例:沒有異常産生

public class JavaDemo{
   public static void main(String args[]) {
       System.out.println("【1】******程式開始執行******") ; 
       System.out.println("【2】數學計算:" +(10 / 2)) ;   
       System.out.println("【3】******程式執行完畢******") ;    
   }     
}           

圖一 執行結果一

在程式執行正常的過程裡面會發現,所有的程式會按照既定的結構從頭到尾開始執行。

範例:産生異常

public class JavaDemo{
    public static void main(String args[]) {
       System.out.println("【1】*****程式開始執行*****") ; 
       System.out.println("【2】數學計算:" +(10 / 0)) ;   
       System.out.println("【3】*****程式執行完畢*****") ;    
    }     
}           

圖二 執行出現錯誤

在出現錯誤之後,整個程式将不會按照既定的程式進行執行,而是中斷了執行。那麼為了保證程式出現了非緻命錯誤之後程式依然可以正常完成,是以就需要有一個完善的異常處理機制,以保證程式的順利執行。

處理異常

在Java之中如果要進行異常的處理,可以使用:try、catch、finally這幾個關鍵字來完成,其基本的處理結構如下:

try{
       //可能出現異常的語句
}[catch(異常類型 異常對象){
       //異常處理
}catch(異常類型 異常對象){
       //異常處理
}catch(異常類型 異常對象){
       //異常處理
}.....] [finally {
       不管異常是否處理都要執行 ;
}]           

在此之中可以使用的組合為:try…catch、try…catch…finally、try…finally。

範例:處理異常

public class JavaDemo{
    public static void main(String args[]) {
        System.out.println("【1】*****程式開始執行*****") ; 
        try {
               System.out.println("【2】數學計算:" +(10 / 0)) ;   
        } catch (ArithmeticException e) {
               System.out.println("【c】處理異常:" + e) ;          //處理異常
        }
        System.out.println("【3】*****程式執行完畢*****") ;    
     }     
}           
出錯保障局-異常處理機制 | 帶你學《Java面向對象程式設計》之七十六

圖三 執行結果三

此時可以發現現在即便出現了異常,程式也可以正常執行完畢,是以此時的設計屬于一個合理設計。但是有一個問題出現了,此時在進行異常處理的時候直接輸出的是一個異常類的對象,那麼對于此對象如果直接列印(調用toString())所得到的異常資訊并不完整,如果要想獲得非常完整的異常資訊,則可以使用異常類中提供的printStackTrace()方法完成。

範例:擷取完整異常資訊

public class JavaDemo{
    public static void main(String args[]) {
        System.out.println("【1】*****程式開始執行*****") ; 
        try {
              System.out.println("【2】數學計算:" +(10 / 0)) ;   
        } catch (ArithmeticException e) {
              e.printStackTrace() ;
        }
        System.out.println("【3】*****程式執行完畢*****") ;    
    }     
}           

圖四 完整異常資訊的輸出

對于異常的處理格式也可以在最後追加有一個finally的程式塊,表示異常處理後的出口,不管是否出現異常都執行。

範例:使用finally語句

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

圖五 執行結果五

此時程式中有異常執行finally,沒有異常也執行finally。

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

本内容視訊來源于

阿裡雲大學 下一篇:強悍的異常處理-處理多個異常 | 帶你學《Java面向對象程式設計》之七十七 更多Java面向對象程式設計文章檢視此處