首页 > 其他 > 详细

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

时间:2016-03-17 10:52:19      阅读:305      评论:0      收藏:0      [点我收藏+]

很明显在中间执行!

看看代码,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会不会被执行,什么时候被执行

原文:http://www.cnblogs.com/wushenghfut/p/5286301.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!