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

Posted 爱上胡萝卜的猴子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行相关的知识,希望对你有一定的参考价值。

很明显在中间执行!

看看代码,finally中间没有return返回1:

 

public class ABC {

    @SuppressWarnings("static-access")
    public static void main(String[] args) {
        System.out.println("结果: " + new ABC().test());
    }
    
    static int test(){
        int i = 1;
        try {
            System.out.println("try里面的i : " + i);
            return i;
        }finally{
            System.out.println("进入finally...");
            ++i;
            System.out.println("fianlly里面的i : " + i);
			//return i;
        }
    }
}

  结果是:技术分享

再看代码:finally中间有return返回2:

public class ABC {

    @SuppressWarnings("static-access")
    public static void main(String[] args) {
        System.out.println("结果: " + new ABC().test());
    }
    
    static int test(){
        int i = 1;
        try {
            System.out.println("try里面的i : " + i);
            return i;
        }finally{
            System.out.println("进入finally...");
            ++i;
            System.out.println("fianlly里面的i : " + i);
            return i;
        }
    }
}

结果是:技术分享

因此,如果finally中没有return则最终会执行try中的return  而且返回值是当时在try中存储的值,若,finally中间有return则返回finally中的值。

另外再看代码:

class Test {
    public static void main(String[] args) {
        System.out.println(new Test().test());;

    }
    int test()
    {

        try
        {
            return func1();
        }finally{
            return func2();
        }
    }
    int func1()
    {
        System.out.println("func1");
        return 1;
    }
    int func2()
    {
        System.out.println("func2");
        return 2;
    } 
}

结果为:技术分享

以上是关于try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行的主要内容,如果未能解决你的问题,请参考以下文章

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

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

java基础之异常——try{}里面有一个return语句,那么紧跟在try后的return语句还会执行吗?什么时候执行,在return前还是后?

关于try finally的一个例子

Java异常try里面有return,finally代码会执行吗

Java面试:2021.05.16(周末愉快!)