在try{}里面有一个return语句,那么紧跟在后面的finally{}里面的code还会执行吗?...

只要try{}里面没有System.exit(),finally{}里面的code就会执行;

package com.test;

public class TryAndFinally {
    public String ff(){
        System.out.println("ff()");
        return "111";
    }
    public String hh(){
        try{
            return ff();
        }catch(Exception e){
            System.out.println("e");
        }finally{
            System.out.println("finally");
            return "finally";
        }
    }
    public static void main(String[] args){
        TryAndFinally taf=new TryAndFinally();
        taf.hh();
    }
}

执行的结果是:ff()       finally

他们的执行程序是:先执行ff()方法,然后当遇到try{}里面的return时,程序就自动执行finally{}然后在return。

所以说finally{}既可以说是在return之前执行也可以说是在执行return的中间执行。

如果

package com.test;

public class TryAndFinally {
    public String ff(){
        System.out.println("ff()");
        return "111";
    }
    public String hh(){
        try{
            //return ff();
            System.exit(1);
        }catch(Exception e){
            System.out.println("e");
        }finally{
            System.out.println("finally");
            return "finally";
        }
    }
    public static void main(String[] args){
        TryAndFinally taf=new TryAndFinally();
        taf.hh();
    }
}

执行的结果是空,因为执行System.exit()就推出了虚拟机,finally{}不再执行。

 

 

 

 

 

转载于:https://www.cnblogs.com/xinxinjava/archive/2013/05/05/3061211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值