在實(shí)際操作中,還有一個(gè)很有意思的小問(wèn)題,在try-catch-finally,如果catch中return了,還會(huì)執(zhí)行finally嗎
答案是:會(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ì)好奇,不是說(shuō)在處理異常中,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也放出來(lái)
具體執(zhí)行步驟變?yōu)椋?/p>
catch: b=66 ---> return b=return 66 ---> finally:b=20 retun b=return 20 ---> 結(jié)束程序
也就是說(shuō)在finally中,如果沒(méi)有return,而catch中有return,則return的值在catch中就已經(jīng)確認(rèn),
隨后執(zhí)行的finally,無(wú)論發(fā)生什么,只要沒(méi)有return,就不會(huì)改變最終輸出的結(jié)果
標(biāo)題名稱(chēng):處理異常時(shí),在catch中return會(huì)怎么樣?-創(chuàng)新互聯(lián)
本文來(lái)源:http://aaarwkj.com/article34/cdpepe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、品牌網(wǎng)站制作、小程序開(kāi)發(fā)、關(guān)鍵詞優(yōu)化、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容