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

本文探讨了Java中try-catch-finally结构内的return语句行为。特别关注当try和finally块内都存在return时,最终返回的是finally块中的值这一规则,并通过具体示例进行验证。

根据java规范:在try-catch-finally中,如果try-finally或者catch-finally中都有return,则两个return语句都执行并且最终 
返回到调用者那里的是finally中return的值;而如果finally中没有return,则理所当然的返回的是try或者catch中return的值,但是 
finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。

以下例子证明了上述说法:

public  class Testfinal {

    public static void main(String[] args) {

       // TODO Auto-generated method stub

      // System.out.println( new  Test().test() );;
       System.out.println(new Testfinal().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;

    }   

}
运行结果:

转载于:https://www.cnblogs.com/Rosefxd/archive/2013/05/28/3103763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值