1. 程式人生 > >try catch finally 裡有return的執行機制

try catch finally 裡有return的執行機制

1、首先明確不管try 和catch裡面有沒有return ,finally裡的程式碼都會執行
2、如果try和catch裡面有return(不討論,沒有return的情況,很明顯)
(1)finally 無 return
就算finally裡程式碼對返回的變數進行修改,但是這個作用範圍只在finally程式碼塊以及 後邊的程式碼 有效,實際return的還是try 或者catch之前的返回值。
(2)finally 有return
最終結果以finally 裡return 的內容為準。

總結:就是 finally裡的程式碼是在 try或catch 執行完畢之後,也包括執行完return才執行finally裡的程式碼,這個時候 try catch的return值會被暫存起來,再執行finally程式碼,如果finally無return,就算改了之前的返回值 也不會有影響。但是如果finally有return的話 就會直接返回finally 內實際修改的內容,忽略掉之前的值。
但是finally中最好不要包含return,否則程式會提前退出,返回值不是try或catch中儲存的返回值。