try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

直接上代码:

 System.out.println("结果:"+test(1));
    


    public static int test(int i) {
        try {
            System.out.println("进入try:");
            System.out.println(++i);
            return i;
            }catch(Exception e) {
                
            }finally {
                ++i;
                System.out.println("finally"+i);
                //return i;
            }

        }

结果:

进入try:
2
finally3
结果:2   

如果把finally里的return注释去掉,结果才是3.

从结果可以看出,其实关于这个回答可以说是,finally是在return中间执行的,执行到return之后,结果就放在一个临时空间里面,然后就执行finally,虽然finally里面有对result里面操作,但是已经不影响结果了,除非是在finally里面有执行return。

但是问题又来了,如果return的变量是静态变量,执行完finally后改变变量的值的话,返回的结果是受影响的,应该是静态变量的原因,不管在哪里改变,都会受到影响

猜你喜欢

转载自blog.csdn.net/BinGuoLA/article/details/81138398