1. 程式人生 > 實用技巧 >java中try-catch-finally-return的分析

java中try-catch-finally-return的分析

try/catch/finally

一、疑問

try-catch-finally-return的執行順序是咋樣的?
當try和catch中有return語句時,finally塊會不會執行?
當try和catch中有return語句時 ,返回值是當try和catch中的返回值,還是finally 的返回值?
示例一:

1. 執行try裡的語句,b = 3 暫存
2. 沒有異常,執行finally裡 b = 5
3. 繼續跑到try裡去return,此時b = 5了
//答案是5
示例二:

1. 執行try, b = 3 暫存
2. 沒有異常,執行finally b = 5, 有return語句,繼續執行 return 5;
//答案 5 

所以嘛:總結下來就是,如果try/catch/finaly都有return,返回finaly裡的,finaly裡沒有,返回try/catch裡的

在try語句中,在執行return語句時,要返回的結果已經準備好了,就在此時,程式轉到finally執行了。在轉去之前,try中先把要返回的結果存放到不同於x的區域性變數中去,執行完finally之後,在從中取出返回結果,因此,即使finally中對變數x進行了改變,但是不會影響返回結果。