您的位置:首页 > 编程语言 > Java开发

Java try catch finally的执行顺序

2013-06-14 09:15 411 查看
 关于Java中try catch finally 的执行顺序一直是入职笔试的一个热门,其实在实际的项目中还是遇到的比较多,所以整理如下:
     需要首先注意的几点:

     1) try catch finally中的finally不管在什么情况之下都会执行,执行的时间是在程序return 之前.

     2) Java 编译器不允许有显示的执行不到的语句块,比如return之后就不可能再有别的语句块(分支不属于此列) 所以以下程序编译会报错:

    

Java代码  


public String testSeq(){  
    String result = "";  
    int i = 0;   
    try{  
            System.out.println(6/i);  
            System.out.println("in try...");  
            //return "try";  
         }catch(Exception e){  
            e.printStackTrace();   
            System.out.println("In catch..."); //return "catch";   
         }finally{   
            System.out.println("In finally....");  
            return "finally";   
         }   
      return result;  
 }  

 (原因是finally块中已经存在return)

 

几个关于try catch finally的小例子:

 1)

   

Java代码  


public String testSeq(){  
       String result = "";  
       int i = 0;  
       try{   
            System.out.println("in try...");  
            return "try";   
        }catch(Exception e){   
            e.printStackTrace();  
            System.out.println("In catch...");   
            return "catch";  
        }finally{   
            System.out.println("In finally...."); return "finally";   
        }   
}  

 

输出结果为:

Java代码  


in try...   
In finally....   
finally(return value)  

2)

  

Java代码  


public String testSeq(){  
      String result = "";  
      int i = 0;   
      try{  
            i = 7/i;   
            System.out.println("in try...");   
            return "try";   
       }catch(Exception e){   
            e.printStackTrace();   
            System.out.println("In catch...");  
            return "catch";   
       }finally{  
            System.out.println("In finally....");  
            return "finally";   
       }   
}  

输出结果:

 

Java代码  


java.lang.ArithmeticException: / by zero at com.ncs.eric.TestTryCatchFinally.testSeq(TestTryCatchFinally.java:9) at com.ncs.eric.TestTryCatchFinally.main(TestTryCatchFinally.java:24)  
 In catch...   
 In finally....  
 finally(return value)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: