在try,catch,finally中return,throw覆盖的问题总结
来源:互联网 发布:我的世界,java.net 编辑:程序博客网 时间:2024/06/06 01:58
先给出一段代码,请大家思考一下这段代码的输出。
class T{public static void main(String[] args) {try {if (testEx()) {System.out.println("程序正常o^o");}else{System.out.println("程序异常T_T");}} catch (Exception e) {// TODO: handle exceptionSystem.out.println("发生除零异常啦~~~~");}}public static boolean testEx(){boolean ok=true;try {int i=3/0;return false;} catch (Exception e) {// TODO: handle exceptionSystem.out.println("发生除零异常");throw e;}finally {return ok;}}}
你的答案是否是:
发生除零异常
发生除零异常啦~~~~
那么恭喜你,答错啦~~~
正确的答案应该是:
为什么会这样呢?我们知道在java中,无论是return还是抛出异常,都会导致方法的结束。但是java中finally语句又必须执行,所以finally语句的执行时机应该是在try语句中的return语句之前,或者catch语句中throw语句执行之前。不然,无论是return语句执行,还是throw语句执行,都将导致finally语句无法得到执行。又由于在finally语句中,书写了return语句,就是这么个return语句,将导致方法的提前结束,因而无论是try中的return语句,还是catch中的throw语句,都将失去执行的机会,仿佛被覆盖掉了一般。因此有了以上的结果。发生除零异常
程序正常o^o
阅读全文
0 0
- 在try,catch,finally中return,throw覆盖的问题总结
- try-catch-finally中throw,return时的执行顺序
- 在try-catch-finally中, return
- (总结)try{}catch{}中有return,finally{}的执行情况
- try catch finally中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的执行情况
- try-catch-finally中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的执行情况
- react使用hashHistory实现类似get方法带参数跳转
- 创建so文件并加载
- css学习
- MVC5学习小记(3)--数据库操作
- ubuntu vi, vim 编辑器的使用
- 在try,catch,finally中return,throw覆盖的问题总结
- linux中fork()函数详解(原创!!实例讲解)
- eclipse代码自动补全
- 数学之路(2)-数据分析-R基础(1)
- Codeforces 219D Choosing Capital for Treeland DP(Tree)
- 数组做为参数传入Oracle存储过程操作数据库
- 让时间处理简单化 【第三方扩展类库org.apache.commons.lang.time】
- WPF控件之RichTextbox
- centos7 查看.so导出函数