programming/java

try-finally-return
Edited: Saturday 28 June 2025

Java try和finally同时return 最终结果

StrangenessWind
IP属地: 上海
2022.07.06 17:44:45
字数 185
阅读 418
java中如果方法中同时包含了try和finally代码块,那么try方法块会在finally代码块前执行
如果在try代码块 和finally代码块中同时有return语句,那么finally的return的值会覆盖try代码块的值,同时try中的return语句也会先执行,如果return的是方法体,try和finally代码块都会执行return的方法函数,但是返回值只会是finally代码块的。
下面看个例子:

public class Run {

public static String print(String a) {
    System.out.println(a);
    return a;
}

public static String test() {

    String a = "try代码块返回--1";
    try {
        return print(a);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        a = "finally代码块返回--2";
        return print(a);
    }
}

public static void main(String[] args) {
    String s = test();
    System.out.println("最终返回的数据是:" + s);
}

}
执行上面的main方法打印

try代码块返回–1
finally代码块返回–2
最终返回的数据是:finally代码块返回–2

进程已结束,退出代码0

以上证明:
在finally中的代码始终都会执行,如果try中和finally都执行了方法那么这个方法会被重复执行。