finally和return的執行順序


 

finally和return的執行順序

try() ⾥⾯有⼀個return語句, 那么后⾯的finally{}⾥⾯的code會不會被執⾏, 什么時候執⾏, 是在return前還是return后?

如果try中有return語句, 那么finally中的代碼還是會執⾏。因為return表⽰的是要整個⽅法體返回, 所以,finally中的語句會在return之前執⾏。

但是return前執行的finally塊內,對數據的修改效果對於引用類型和值類型會不同

public static void main(String[] args) {
    int f = f();
    System.out.println(f);//0
    int[] f2 = f2();
    System.out.println(f2[0]);//1
}

// 測試 修改值類型
static int f() {
    int ret = 0;
    try {
        return ret;  // 返回 0,finally內的修改效果不起作用
    } finally {
        ret++;
        System.out.println("finally執行");
    }
}


// 測試 修改引用類型
static int[] f2() {
    int[] ret = new int[]{0};
    try {
        return ret;  // 返回 [1],finally內的修改效果起了作用
    } finally {
        ret[0]++;
        System.out.println("finally執行");
    }
}

 

文章來源:https://hollischuang.gitee.io/tobetopjavaer/#/basics/java-basic/order-about-finllly-return


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM