1. 程式人生 > >try和finally中都有return語句,執行哪一個return?

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中儲存的返回值