14. 異常處理中 try{}中有一個return,問finally{}會不會執行,最終結果是什麼?
阿新 • • 發佈:2021-10-14
14. 異常處理中 try{}中有一個return,問finally{}會不會執行,最終結果是什麼?
// 這麼問太過枯燥了,看程式碼題目吧 求問最終程式碼輸出結果 public class Test { public static void main(String[] args) { System.out.println(test()); } private static int test() { int temp = 1; try { System.out.println(temp); return ++temp; } catch (Exception e) { System.out.println(temp); return ++temp; } finally { ++temp; System.out.println(temp); } } } // 結果是1,3,2 哦
# 題解:
# 第一個輸出結果1 沒有任何疑問
# 當代碼執行到try塊中的return時,最終返回的返回結果就已經定了 就是此時的temp值:2
# 但是由於finally程式碼塊必須執行,所以++temp;執行 此時temp:3
# 面試回答:
# try{}中有一個return,finally是會執行的,在【return中】執行
# 當代碼執行到try塊中的return時,返回的值會被存入一個臨時空間,然後繼續執行finally程式碼塊,如果此時finally中有新的return值 那麼臨時返回值會被finally中的return替換