try catch finally執行順序詳解

2022-07-26 01:24:11 字數 1446 閱讀 1283

try塊中丟擲異常,try、catch和finally中都有return語句

public static int withexception(){

int i=10;

try{

system.out.println("i in try block is : "+i);

i = i/0;

return --i;

catch(exception e){

system.out.println("i in catch - form try block is : "+i);

--i;

system.out.println("i in catch block is : "+i);

return --i;

finally{

system.out.println("i in finally - from try or catch block is--"+i);

--i;

system.out.println("i in finally block is--"+i);

return --i;

執行結果:

**********==withexception***************===

i in try block is : 10

i in catch - form try block is : 10

i in catch block is : 9

i in finally - from try or catch block is--8

i in finally block is--7

6******************************=

執行順序:

丟擲異常後,執行catch塊,在catch塊的return的--i執行完後,並不直接返回而是執行finally,因finally中有return語句,所以,執行,返回結果6。

結論:try塊中丟擲異常,try、catch和finally中都有return語句,返回值是finally中的return。

總體結論:

結論一:

return語句並不是函式的最終出口,如果有finally語句,這在return之後還會執行finally(return的值會暫存在棧裡面,等待finally執行後再返回)

結論二:

finally裡面不建議放return語句,根據需要,return語句可以放在try和catch裡面和函式的最後。可行的做法有四:

(1)return語句只在函式最後出現一次。

(2)return語句僅在try和catch裡面都出現。

(3)return語句僅在try和函式的最後都出現。

(4)return語句僅在catch和函式的最後都出現。

注意,除此之外的其他做法都是不可行的,編譯器會報錯

try catch finally執行順序

public class test public static int ma catch exception e finally 說明 不出現異常情況 執行順序 try finally 出現異常情況 執行順序 try catch finally try中有返回語句,沒有異常 執行順序 try ret...

try catch finally執行順序

結論 1 不管有木有出現異常,finally塊中 都會執行 2 當try和catch中有return時,finally任會執行 3 finally是在return表示式運算後前執行的,所以函式返回值是在finally執行前確定的 4 finally中最好不要包含return,否則程式會提前退出,返回...

try catch finally使用體會

try catch finally public class finallytest static int test finally 結果是2。在try語句中,在執行return語句時,要返回的結果已經準備好了,就在此時,程式轉到finally執行了。在轉去之前,try中先把要返回的結果存放到不同於...