try和finally中都有return語句,執行哪一個return?


try 中的 return 語句調用的函數先於 finally 中調用的函數執行,也就是說 try 中的 return 語句先執行,finally 語句后執行,但try中的 return 並不是讓函數馬上返回結果,而是 return 語句執行后,將把返回結果放置進函數棧中,此時函數並不是馬上返回,它要執行 finally 語句后才真正開始返回。但此時會出現兩種情況:
① 如果finally中也有return,則會直接返回finally中的return結果,並終止程序,函數棧中的return不會被完成
② 如果finally中沒有return,則在執行完finally中的代碼之后,會將函數棧中保存的try return的內容返回並終止程序

注意:

1、不管有沒有出現異常,finally塊中代碼都會執行
2、當try和catch中有return時,finally仍然會執行
3、finally是在try中return后面的表達式運算后執行的(此時並沒有返回運算后的值,而是先把要返回的值保存起來,管finally中的代碼怎么樣,返回的值都不會改變,仍然是之前保存的值),所以函數返回值是在finally執行前確定的
4、finally中最好不要包含return,否則程序會提前退出,返回值不是try或catch中保存的返回值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM