1. 程式人生 > >try{}裡面有return,finally裡的程式碼會不會執行,什麼時候被執行?

try{}裡面有return,finally裡的程式碼會不會執行,什麼時候被執行?

給出答案:

會執行,在方法返回給呼叫者前執行,因為如果存在finally程式碼塊,try中的return語句

不會立馬返回給呼叫者,而是記錄下返回值待finally程式碼塊執行完畢之後再返回;

注意這幾點:

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