try catch finally的執(zhí)行順序深入分析
更新時(shí)間:2013年09月10日 15:52:42 作者:
首先執(zhí)行try,如果有異常執(zhí)行catch,無論如何都會(huì)執(zhí)行finally,當(dāng)有return以后,函數(shù)就會(huì)把這個(gè)數(shù)據(jù)存儲(chǔ)在某個(gè)位置,然后告訴主函數(shù),我不執(zhí)行了,接下來你執(zhí)行吧,所以函數(shù)就會(huì)推出
首先執(zhí)行try,如果有異常執(zhí)行catch,無論如何都會(huì)執(zhí)行finally
一個(gè)函數(shù)中肯定會(huì)執(zhí)行finally中的部分。
關(guān)于一個(gè)函數(shù)的執(zhí)行過程是,當(dāng)有return以后,函數(shù)就會(huì)把這個(gè)數(shù)據(jù)存儲(chǔ)在某個(gè)位置,然后告訴主函數(shù),我不執(zhí)行了,接下來你執(zhí)行吧,所以函數(shù)就會(huì)推出。
但是當(dāng)一個(gè)函數(shù)中出現(xiàn)finally以后,finally永遠(yuǎn)都要執(zhí)行,所以,就算try或者catch中已經(jīng)執(zhí)行了return了,但是這時(shí)函數(shù)不會(huì)退出,不會(huì)告訴主函數(shù)去執(zhí)行,而是等待finally執(zhí)行完了才回去告訴主函數(shù)去執(zhí)行,這時(shí)候如果finally中出現(xiàn)了return的話,這次return的值就會(huì)覆蓋掉try或者catch中的值,然后才會(huì)告訴主函數(shù):我不執(zhí)行了,你去執(zhí)行吧。所以主函數(shù)會(huì)得到finally中的返回值。也就是說子函數(shù)的返回值永遠(yuǎn)是finally中的返回值(只要被調(diào)用的函數(shù)中有值)
一個(gè)函數(shù)中肯定會(huì)執(zhí)行finally中的部分。
關(guān)于一個(gè)函數(shù)的執(zhí)行過程是,當(dāng)有return以后,函數(shù)就會(huì)把這個(gè)數(shù)據(jù)存儲(chǔ)在某個(gè)位置,然后告訴主函數(shù),我不執(zhí)行了,接下來你執(zhí)行吧,所以函數(shù)就會(huì)推出。
但是當(dāng)一個(gè)函數(shù)中出現(xiàn)finally以后,finally永遠(yuǎn)都要執(zhí)行,所以,就算try或者catch中已經(jīng)執(zhí)行了return了,但是這時(shí)函數(shù)不會(huì)退出,不會(huì)告訴主函數(shù)去執(zhí)行,而是等待finally執(zhí)行完了才回去告訴主函數(shù)去執(zhí)行,這時(shí)候如果finally中出現(xiàn)了return的話,這次return的值就會(huì)覆蓋掉try或者catch中的值,然后才會(huì)告訴主函數(shù):我不執(zhí)行了,你去執(zhí)行吧。所以主函數(shù)會(huì)得到finally中的返回值。也就是說子函數(shù)的返回值永遠(yuǎn)是finally中的返回值(只要被調(diào)用的函數(shù)中有值)
相關(guān)文章
Eclipse設(shè)置svn忽略文件或文件夾(svn:ignore)的操作
這篇文章主要介紹了Eclipse設(shè)置svn忽略文件或文件夾(svn:ignore)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Spring實(shí)戰(zhàn)之使用注解實(shí)現(xiàn)聲明式事務(wù)操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用注解實(shí)現(xiàn)聲明式事務(wù)操作,結(jié)合實(shí)例形式詳細(xì)分析了spring使用注解實(shí)現(xiàn)聲明式事務(wù)相關(guān)配置、接口實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2020-01-01
Java運(yùn)用SWT插件編寫桌面記事本應(yīng)用程序
這篇文章主要為大家介紹了一個(gè)Java項(xiàng)目實(shí)戰(zhàn),一步步教你實(shí)現(xiàn)記事本,步驟很詳細(xì),運(yùn)用SWT插件手把手編寫記事本,感興趣的小伙伴們可以參考一下2016-01-01
Java為何需要平衡方法調(diào)用與內(nèi)聯(lián)
這篇文章主要介紹了Java為何需要平衡方法調(diào)用與內(nèi)聯(lián),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01
Java使用Flyway實(shí)現(xiàn)數(shù)據(jù)庫版本控制的技術(shù)指南
在現(xiàn)代應(yīng)用開發(fā)中,數(shù)據(jù)庫結(jié)構(gòu)經(jīng)常隨著業(yè)務(wù)需求不斷演變,使用手動(dòng)SQL腳本管理數(shù)據(jù)庫版本,不僅容易出現(xiàn)錯(cuò)誤,還難以跟蹤和回滾,Flyway是一個(gè)強(qiáng)大的數(shù)據(jù)庫遷移工具,能夠幫助開發(fā)者高效管理和自動(dòng)化數(shù)據(jù)庫的版本控制,本文將介紹Flyway的基本功能及其在SpringBoot項(xiàng)目中的實(shí)踐2025-02-02
SpringBoot的監(jiān)控(Actuator)功能用法詳解
這篇文章主要介紹了SpringBoot的監(jiān)控(Actuator)功能用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03

