Java try catch finally的执行顺序
2013-04-17 11:24
357 查看
关于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)
【原文:/article/7525572.html】
需要首先注意的几点:
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; }
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"; } }
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)
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"; } }
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)
【原文:/article/7525572.html】
相关文章推荐
- java Try/catch/finally 执行顺序
- 【Java】try、catch、finally的执行顺序与返回值问题
- java中try、catch、finally返回语句执行顺序
- java中try{}catch{}和finally{}的执行顺序问题
- Java —— try-catch-finally-return的执行顺序
- Java异常处理机制以及try-catch-finally-return执行顺序
- Java中finally语句块的深度解析(try catch finally的执行顺序)
- java中的异常以及 try catch finally以及finally的执行顺序
- 关于Java中try-catch-finally-return的执行顺序
- 【Java异常学习笔记系列】try/catch/finally执行顺序及总结(含return)
- 【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及finally执行顺序详解
- Java中try-catch-finally-return的执行顺序
- Java中的try-catch-finally-return的执行顺序
- java中try{}catch{}和finally{}的执行顺序问题
- java 中 try catch finally 语句的执行顺序