新聞資訊

新聞資訊 通知公告

JAVA:處理異常時,在catch中return會怎么樣?

編輯:009     時間:2020-03-07

在實際操作中,還有一個很有意思的小問題,在try-catch-finally,如果catch中return了,還會執行finally嗎

答案是:會的,因為finally的作用就是處理善后,但是是在return前執行

public class a{
public static void main(String[] args){
     System.out.println(gi());
}
public static int gi(){
   int b=10;
   try{
   System.out.println(b/0);
   b=99;
   }
   catch(ArithmeticException e){
   b=66;
   return b;
   }finally{
   b=20;
   //return b;
   }
}
}

上面的代碼如果,造成執行最后的結果是66

這時候可能有人會好奇,不是說在處理異常中,catch哪怕return了,也會執行finally嗎?

實際上,在 try-catch-finally中 ,catch里面return了也會,還是會執行finally

具體執行步驟:

catch: b=66  --->    return b=return 66   --->    finally:b=20   ---> 結束程序

而我們,如果把注釋里面的 return b也放出來

具體執行步驟變為:

catch: b=66   --->    return b=return 66   --->    finally:b=20   retun b=return 20   ---> 結束程序

也就是說在finally中,如果沒有return,而catch中有return,則return的值在catch中就已經確認,

隨后執行的finally,無論發生什么,只要沒有return,就不會改變最終輸出的結果

來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/69917874/viewspace-2678286/,如需轉載,請注明出處,否則將追究法律責任。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

回復列表

相關推薦
乌克兰妈妈与男孩XXX-6k夜趣-伊人综合人网22名图片-巨型蝌蚪电影在线看