finally和return的執行順序

2021-09-24 14:39:49 字數 570 閱讀 9016

當finally呼叫的任何可變api,會修改返回值;當finally呼叫任何的不可變api,對返回值沒有影響。

總結一下:其實return與finally並沒有明顯的誰強誰弱。在執行時,是return語句先把返回值寫入但記憶體中,然後停下來等待finally語句塊執行完,return再執行後面的一段。

類似於

public string fun()  catch (exception e)  finally 

}public stringbuffer fun2() catch (exception e) finally

}public string fun3() catch (exception e) finally

}

fun()返回20     fun2()返回200   fun3()返回20

也就是說,  如果return的值相當於時final的,方法返回相當於指向乙個記憶體區域並且記憶體位址不可改變, 如果是常量,則返回值不可改變, 如果是物件等變數, 那麼可以在不該變物件位址的情況下,修改物件的屬性

參考文章 return與finally到底誰先執行?.

return和finally執行順序

public class test public static int tt catch exception e finally system.out.println finally system.out.println come here return b 執行結果 yesb 25 111 fin...

java中finally和return的執行順序

注意 return的位置。從這幾個例子中可以看到,如果try之前沒有有條件的return,則try.catch finally語句塊中的語句都是順序執行 如果try中或者catch中 有return語句,那麼先執行該return,然後執行finally,如果finally中也有return,該出的返...

異常捕獲時的return和finally

以前一直認為在try,catch,finally中,try中的return 會在finally之後執行,今天和同事遇到,然後重新測試了一下,如下 主方法 param args public static void main string args 測試方法 return private static...