【本節目标】
通過閱讀本節内容,你将了解到異常的基本定義,以及處理異常的基本方法,學會使用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】*****程式執行完畢*****") ;
}
}

圖三 執行結果三
此時可以發現現在即便出現了異常,程式也可以正常執行完畢,是以此時的設計屬于一個合理設計。但是有一個問題出現了,此時在進行異常處理的時候直接輸出的是一個異常類的對象,那麼對于此對象如果直接列印(調用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面向對象程式設計文章檢視此處