finally和return的执行顺序

Posted 泡^泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了finally和return的执行顺序相关的知识,希望对你有一定的参考价值。

try() ⾥⾯有⼀个return语句, 那么后⾯的finally⾥⾯的code会不会被执⾏, 什么时候执⾏, 是在return前还是return后?

如果try中有return语句, 那么finally中的代码还是会执⾏。因为return表⽰的是要整个⽅法体返回, 所以,finally中的语句会在return之前执⾏。

但是return前执行的finally块内,对数据的修改效果对于引用类型和值类型会不同:

// 测试 修改值类型
static int test1() 
    int ret = 0;
    try 
        return ret;  // 返回 0,finally内的修改效果不起作用
     finally 
        ret++;
        System.out.println("finally执行");
    


// 测试 修改引用类型
static int[] test2()
    int[] ret = new int[]0;
    try 
        return ret;  // 返回 [1],finally内的修改效果起了作用
     finally 
        ret[0]++;
        System.out.println("finally执行");
    

以上是关于finally和return的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

finally和return的执行顺序

return与finally的执行顺序的影响(skycto JEEditor)

java try catch finally return执行顺序

try..catch..finally执行顺序return

关于finally和return执行顺序(待补充)

try catch finally 中 returne的执行顺序