1. 程式人生 > 其它 >14. 異常處理中 try{}中有一個return,問finally{}會不會執行,最終結果是什麼?

14. 異常處理中 try{}中有一個return,問finally{}會不會執行,最終結果是什麼?

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替換