在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{}不再执行。

 

 

 

 

 

posted @ 2013-05-05 17:19  欣欣家园  阅读(516)  评论(0编辑  收藏  举报