第一種情況
try語句塊里面有return語句,catch語句塊和finally語句塊里面沒有return語句。
代碼如下:
public class Main { public static void main(String[] args) { System.out.println(test1()); } public static int test1() { int i =10; try { System.out.println("try語句"); return --i; } catch (Exception e) { System.out.println("catch語句"); } finally { System.out.println("finally語句"); } return 0; } }
運行結果如下:
try語句 finally語句 9
執(zhí)行順序:
1.先執(zhí)行try塊中語句,包括return語句中的表達式運算,但不返回。
2.執(zhí)行finally語句塊中的全部代碼。
3.最后執(zhí)行try塊中return 返回。
第二種情況
try語句塊和finally語句塊里面有return語句,catch語句塊里面沒有return語句。
代碼如下:
public class Main { public static void main(String[] args) { System.out.println(test2()); } public static int test2() { int i =10; try { System.out.println("try語句"); return --i; } catch (Exception e) { System.out.println("catch語句"); } finally { System.out.println("finally語句"); return --i; } } }
運行結果如下:
try語句 finally語句 8
執(zhí)行順序:
1.先執(zhí)行try塊中語句,包括return語句中的表達式運算,但不返回。
2.執(zhí)行finally語句塊中的全部代碼。
3.最后發(fā)現(xiàn)finally語句塊中有return語句,從這里返回。
第三種情況
try語句塊和catch語句塊里面有return語句,finally語句塊里面沒有return語句,存在異常。
代碼如下:
public class Main { public static void main(String[] args) { System.out.println(test3()); } public static int test3() { int i =10; try { System.out.println("try語句"); int j = 10 / 0; return --i; } catch (Exception e) { System.out.println("catch語句"); return --i; } finally { System.out.println("finally語句"); } } }
運行結果如下:
try語句 catch語句 finally語句 9
執(zhí)行順序:
1.先執(zhí)行try塊中語句,出現(xiàn)異常,catch捕獲到異常。
2.執(zhí)行catch塊中語句,包括return語句中的表達式運算,但不返回。
3.執(zhí)行finally語句塊中的全部代碼。
4.最后執(zhí)行catch塊中return 返回。
第四種情況
try語句塊、catch語句塊和finally語句塊里面都有return語句,存在異常。
代碼如下:
public class Main { public static void main(String[] args) { System.out.println(test4()); } public static int test4() { int i =10; try { System.out.println("try語句"); int j = 10 / 0; return --i; } catch (Exception e) { System.out.println("catch語句"); return --i; } finally { System.out.println("finally語句"); return --i; } } }
運行結果如下:
try語句 catch語句 finally語句 8
執(zhí)行順序:
1.先執(zhí)行try塊中語句,出現(xiàn)異常,catch捕獲到異常。
2.執(zhí)行catch塊中語句,包括return語句中的表達式運算,但不返回。
3.執(zhí)行finally語句塊中的全部代碼。
4.最后發(fā)現(xiàn)finally語句塊中有return語句,從這里返回。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程