try塊中丟擲異常,try、catch和finally中都有return語句
public static int withexception(){
int i=10;
try{
system.out.println("i in try block is : "+i);
i = i/0;
return --i;
catch(exception e){
system.out.println("i in catch - form try block is : "+i);
--i;
system.out.println("i in catch block is : "+i);
return --i;
finally{
system.out.println("i in finally - from try or catch block is--"+i);
--i;
system.out.println("i in finally block is--"+i);
return --i;
執行結果:
**********==withexception***************===
i in try block is : 10
i in catch - form try block is : 10
i in catch block is : 9
i in finally - from try or catch block is--8
i in finally block is--7
6******************************=
執行順序:
丟擲異常後,執行catch塊,在catch塊的return的--i執行完後,並不直接返回而是執行finally,因finally中有return語句,所以,執行,返回結果6。
結論:try塊中丟擲異常,try、catch和finally中都有return語句,返回值是finally中的return。
總體結論:
結論一:
return語句並不是函式的最終出口,如果有finally語句,這在return之後還會執行finally(return的值會暫存在棧裡面,等待finally執行後再返回)
結論二:
finally裡面不建議放return語句,根據需要,return語句可以放在try和catch裡面和函式的最後。可行的做法有四:
(1)return語句只在函式最後出現一次。
(2)return語句僅在try和catch裡面都出現。
(3)return語句僅在try和函式的最後都出現。
(4)return語句僅在catch和函式的最後都出現。
注意,除此之外的其他做法都是不可行的,編譯器會報錯
try catch finally執行順序
public class test public static int ma catch exception e finally 說明 不出現異常情況 執行順序 try finally 出現異常情況 執行順序 try catch finally try中有返回語句,沒有異常 執行順序 try ret...
try catch finally執行順序
結論 1 不管有木有出現異常,finally塊中 都會執行 2 當try和catch中有return時,finally任會執行 3 finally是在return表示式運算後前執行的,所以函式返回值是在finally執行前確定的 4 finally中最好不要包含return,否則程式會提前退出,返回...
try catch finally使用體會
try catch finally public class finallytest static int test finally 結果是2。在try語句中,在執行return語句時,要返回的結果已經準備好了,就在此時,程式轉到finally執行了。在轉去之前,try中先把要返回的結果存放到不同於...