1. 程式人生 > >JAVA捕獲異常小結

JAVA捕獲異常小結

上一節的小結: 1、已檢查異常一定要處理,即除了RunTimeExceoption之外的異常子類。 2、一種消極的方法是一直向上丟擲異常,不在函式本階段處理,throws給主函式給JVM。 3、一種積極的做法是用try-catch捕獲異常。 4、多型可以 用在捕獲上面。catch的時候要把子類放前面,父類放後面,不然就會有編譯錯誤。 5、對於java 來說, try 塊中的程式碼是有可能不執行的程式碼例如上例子中輸入4的時候,後面的程式碼是不執行的。

public static int m1(){
try{
return 100;
}catch(Exception e){}
}

函式返回值為int值型別,但是return 語句又不一定會執行,所以,函式是不一定會有一個返回值的,產生編譯錯誤,不可以把返回值放在try塊裡面。 還有一種情況是:

public static void m2(){
int n;
try{
n = 10;
} catch(Exception e){}
System.out.println(n);
}

不能把初始化放在try塊中,不一定會執行,編譯器報錯。

#try-catch中的尾聲finally

static int ma2(int i) {
try{
mb(i);
return 100;
}catch(Exception e){
System.out.println("Exception");
return 200;
}finally{
System.out.println("in finally of ma");
return 300;
}
}

無論有無異常程式的返回值都是300。所以,finally 語句塊中的程式碼,意味著無論程式是否發生異常,都一定要執行。 但有兩種情況: 在進入try塊之前發生異常,程式終止;在try塊中執行了System.exit(0). 正因為 finally 語句塊中的程式碼一定會被執行,因此 finally 語句塊中我們往往會放上一些 釋放資源的程式碼。一些一定要執行的程式碼,例如去銀行取錢,取錢發生了異常但是,一定要吐卡,所以就把吐卡放在finally語句塊中。