finally語句塊一定會被執行嗎? 答案: 不一定
1. 發生異常的代碼必須在try 代碼塊中,才有可能被執行
public class MyTest { public static void main(String[] args) { System.out.println("main 代碼塊中的執行結果為:" + myMethod()); } public static int myMethod() { int i = 0; int[] num = { 1, 2, 3 }; System.out.println(num[3]); try { System.out.println("try 代碼塊被執行!"); return 0; } catch (Exception e) { System.out.println("catch 代碼塊被執行!"); return 0; } finally { System.out.println("finally 代碼塊被執行!");
return 2; } } }
2.
public class MyTest { public static void main(String[] args) { System.out.println("main 代碼塊中的執行結果為:" + myMethod()); } public static int myMethod() { int i = 6; try { System.out.println("try 代碼塊被執行!"); //i = i/0; return 1; } catch (Exception e) { System.out.println("catch 代碼塊被執行!"); return 2; } finally { System.out.println("finally 代碼塊被執行!"); } } }