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)
需要首先注意的几点:
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)
相关文章推荐
- Java try/catch/finally代码块中加入return后的执行顺序问题
- 【JAVA基础总结】try-catch-finally执行顺序
- 关于Java中try catch finally throw return的执行顺序问题
- Java异常捕获之try-catch-finally-return的执行顺序
- java Try/catch/finally 执行顺序
- Java异常捕获之try-catch-finally-return的执行顺序-转载
- Java try catch finally的执行顺序
- JAVA中try catch finally执行顺序
- java try、catch、finally及finally执行顺序详解
- 关于java中try catch finally的执行顺序
- java try catch finally 执行顺序
- Java中try-catch-finally-return的执行顺序
- Java中try-catch-finally-return的执行顺序
- Java含有return 的try catch finally的执行顺序
- 【Java基础之finally和return】有return的情况下try catch finally的执行顺序
- Java中关于try catch finally的一些执行顺序说明
- java 有return的情况下try catch finally的执行顺序
- JAVA中try、catch、finally的使用及finally执行顺序详解
- 【Java疑难杂症】有return的情况下try catch finally的执行顺序
- java中的try-catch-finally执行顺序你真的弄清楚了吗?