Java try和finally同时return 最终结果

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都执行了方法那么这个方法会被重复执行。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容