JAVA中try,catch,finally的return研究
2012-09-11 12:57
441 查看
最近在坛子里看到有人问相关问题。
自己发现自己第一时间打错了。
所以又重新验证了一下。
先上结论给伸手党。
1.finally块和最外层有且只能有一个return,否则出编译期错误。(catch块不影响此结论)
----try块和最外层有且只能有一个return,否则出编译期错误。(try块有时,catch块也必须有return)
----return可以不写在外层而写在finally里,但是会报警告(标黄)。(try块,catch块不影响此结论)
2.finally有return时,不管有没有异常,都会从finally的return跑掉
----try块有return。没有异常(不进入catch块)时,finally块有return走finally,否则走try的return。
--------外层有也不走,其实是运行到try的return时,执行finally在返回try的return,但是finally也有return,所以相当于半路跑路了
----try块有return。有异常(进入catch块)时,finally块有return走finally,否则走catch的return。
--------解释同上,到finally时半路跑路了。
验证代码:
自己发现自己第一时间打错了。
所以又重新验证了一下。
先上结论给伸手党。
1.finally块和最外层有且只能有一个return,否则出编译期错误。(catch块不影响此结论)
----try块和最外层有且只能有一个return,否则出编译期错误。(try块有时,catch块也必须有return)
----return可以不写在外层而写在finally里,但是会报警告(标黄)。(try块,catch块不影响此结论)
2.finally有return时,不管有没有异常,都会从finally的return跑掉
----try块有return。没有异常(不进入catch块)时,finally块有return走finally,否则走try的return。
--------外层有也不走,其实是运行到try的return时,执行finally在返回try的return,但是finally也有return,所以相当于半路跑路了
----try块有return。有异常(进入catch块)时,finally块有return走finally,否则走catch的return。
--------解释同上,到finally时半路跑路了。
验证代码:
/** * JAVA中try,catch,finally的return研究 * @author qian.xu * */ public class MyReturn { public String test(){ int[] a = new int[2]; try{ //for(int i=0;i<2;i++){ //正常系 for(int i=0;i<3;i++){ //异常系 //执行到i=2会报错 a[i] = i; } System.out.println("try块执行完毕"); //return "我是try块的return"; }catch(Exception e){ System.out.println("catch块被执行"); return "我是catch块的return"; }finally{ System.out.println("finally块被执行"); return "我是finally块的return"; } //return "我是最后一个return"; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub MyReturn myReturn = new MyReturn(); System.out.println(myReturn.test()); } }
相关文章推荐
- java中try catch finally与return的执行顺序
- 研究try catch finally return
- java中 try catch finally return执行的顺序
- Java异常处理机制以及try-catch-finally-return执行顺序
- 程序员面试金典: 9.14 Java 14.2在Java中,若在try-catch-finally的try语句块中插入return语句,finally语句块是否还会执行?
- 【Java基础之finally和return】有return的情况下try catch finally的执行顺序
- 关于java中的try-catch-finally语句和return
- Java try/catch/finally代码块中加入return后的执行顺序问题
- Java中try-catch-finally-return的执行顺序
- java中try-catch-finally中的return语句
- Java中try catch finally语句中含有return语句的执行情况(总结版)
- 【Java疑难杂症】有return的情况下try catch finally的执行顺序
- Java实例说明 return在try/catch/finally中的一个注意点
- Java中的try,catch(Exception e),finally及return执行顺序
- return语句在Java的Try Catch Finally中的行为
- Java中try catch finally语句中含有return语句的执行情况
- Java-try_catch_finally中带有return语句的执行顺序
- Java异常处理机制以及try-catch-finally-return执行顺序
- 【Java】try-catch-finally语句中return的执行顺序思考
- Java中try-catch-finally-return的执行顺序