在實(shí)際操作中,還有一個(gè)很有意思的小問題,在try-catch-finally,如果catch中return了,還會(huì)執(zhí)行finally嗎
成都創(chuàng)新互聯(lián)是專業(yè)的雙柏網(wǎng)站建設(shè)公司,雙柏接單;提供成都網(wǎng)站制作、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行雙柏網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!答案是:會(huì)的,因?yàn)閒inally的作用就是處理善后,但是是在return前執(zhí)行
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; } } }
上面的代碼如果,造成執(zhí)行最后的結(jié)果是66
這時(shí)候可能有人會(huì)好奇,不是說在處理異常中,catch哪怕return了,也會(huì)執(zhí)行finally嗎?
實(shí)際上,在 try-catch-finally中 ,catch里面return了也會(huì),還是會(huì)執(zhí)行finally
具體執(zhí)行步驟:
catch: b=66 ---> return b=return 66 ---> finally:b=20 ---> 結(jié)束程序
而我們,如果把注釋里面的 return b也放出來
具體執(zhí)行步驟變?yōu)椋?/p>
catch: b=66 ---> return b=return 66 ---> finally:b=20 retun b=return 20 ---> 結(jié)束程序
也就是說在finally中,如果沒有return,而catch中有return,則return的值在catch中就已經(jīng)確認(rèn),
隨后執(zhí)行的finally,無論發(fā)生什么,只要沒有return,就不會(huì)改變最終輸出的結(jié)果