1. 程式人生 > 實用技巧 >try-catch- finally塊中, finally塊唯一不執行的情況是什麼?

try-catch- finally塊中, finally塊唯一不執行的情況是什麼?

除非在try塊或者catch塊中呼叫了退出虛擬機器器的方法(即System.exit(1);),否則不管在try塊、catch塊中執行怎樣的程式碼,出現怎樣的情況,異常處理的finally塊總是會被執行的

public class TryTest{
public static void main(String[] args){
test();
} public static void test(){
try{
System.out.println("try");
int i = 1 / 0;
System.exit(1);
}catch(Exception e){
e.printStackTrace();
System.exit(1);
}finally{
System.out.println("finally");
}
}
}

輸出結果:

try
java.lang.ArithmeticException: / by zero
at com.tangyang.sometest.TEST.test(TEST.java:11)
at com.tangyang.sometest.TEST.main(TEST.java:5)

使用System.exit(1)語句可以退出Java虛擬機器器,因此不執行finally