您好,登錄后才能下訂單哦!
在實際操作中,還有一個很有意思的小問題,在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,就不會改變最終輸出的結果
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。