当try catch遇上return
来源:互联网 发布:js数组添加到指定位置 编辑:程序博客网 时间:2024/05/21 15:04
如果我们执行一个方法,在方法内抛出异常,那么抛异常那条代码后面的代码就不会被执行了,也就意味着如果我们的方法不是void的话,就没办法返回值,有一个办法,就是在catch代码块和finally代码块返回,但是实际开发中我们不能依赖异常机制来进行语句控制,这里只是了解一下当return语句出现在catch块和finally块里会出现什么情况。
测试1,让方法抛异常,并且catch块中有return语句,结果返回了catch块中的return
public static String test1() { int x = 2, y = 0, result; try { System.out.println("抛异常前..."); result = x / y; // 抛出java.lang.ArithmeticException: / by zero System.out.println("抛异常后..."); return "return in method"; } catch (Exception e) { e.printStackTrace(); return "return in catch"; // 此renturn语句被执行 } }
测试2,让方法抛异常,并且catch块和finally块中都有return语句,结果返回了finally块中的return
public static String test2() { int x = 2, y = 0, result; try { System.out.println("抛异常前..."); result = x / y; System.out.println("抛异常后..."); return "return in method"; } catch (Exception e) { e.printStackTrace(); return "return in catch"; } finally { return "return in finally"; // 此renturn语句被执行 } }
测试3,方法正常执行,并且catch块和finally块中都有return语句,结果返回了finally块中的return
public static String test3() { try { return "return in method"; } catch (Exception e) { e.printStackTrace(); return "return in catch"; } finally { return "return in finally"; // 此renturn语句被执行 } }
结论:当finally块中有return语句时,必定会返回其中的return语句,很简单,因为finally块中的语句一定会被执行,如果在finally块之前返回return语句,方法执行结束,finally块中的语句就执行不了了,所以finally之前的return语句会被忽略;如果finally块中没有return语句,catch块中有,并且方法抛出异常,那么返回catch块中的return语句,方法执行中断。
阅读全文
0 0
- 当try catch遇上return
- 当try/catch...finally遇上return
- 当try、catch、finally遭遇return
- try、catch、return【转】
- try catch finally return?
- try catch finally return
- try catch 的 return
- try catch finally return
- 关于try catch finally遇上return以后的执行顺序解析
- 当finally遇上了return
- 【JavaScript】 当this遇上return
- 当for循环遇上return
- try...catch...finally中的return
- try catch finally 和return
- try、catch、finally巧遇return
- try、catch、finally巧遇return
- try...catch...finally中的return
- try、catch、finally巧遇return
- 开学第三周周中训练总结
- 刷算法题套路总结
- Markdown表格之表格内换行
- mysql的查询、子查询及连接查询
- springboot环境搭建
- 当try catch遇上return
- 准备Java面试之Java SE基础知识——问题篇
- Postgres中FSM及VM文件说明
- C语言中的time函数总结
- POJ2385 Apple Catching
- 总结
- 机器学习 第一章 绪论
- 数据结构的一些基本操作(在表L中插入第i个元素e. 操作成功返回OK,失败时返回ERROR,删除表L中第i个元素,结果用e返回. 操作成功返回OK,失败时返回ERROR)
- 单链表——SList