有return的情況下,try-catch-finally的執行順序
1. 當try和finally中都有return語句時,系統執行到try語句塊中的return時,會先檢測finally語句塊有沒有執行,
如果沒有執行,直接去執行finally語句塊
try {
System.out.println("try語句塊執行");
return;
} catch (Exception e) {
System.out.println("catch語句塊執行");
return;
} finally {
System.out.println("finally語句塊執行");
return;
}

2. 當我們運行程序時,不排除JVM會突然退出,所以當在try語句塊中執行System.exit(1)語句時,JVM會強制退出,這樣,finally語句塊不會執行
try {
System.out.println("try語句塊執行");
System.exit(1);
} catch (Exception e) {
System.out.println("catch語句塊執行");
return;
} finally {
System.out.println("finally語句塊執行");
return;
}

3. 還有一種情況,在發生異常時,在發生異常時,會直接執行catch語句塊,異常下面的代碼,都不會執行
try { System.out.println("try語句塊執行"); int i = 1/0; System.exit(1); } catch (Exception e) { System.out.println("catch語句塊執行");
return; } finally { System.out.println("finally語句塊執行"); return; }


浙公網安備 33010602011771號