异常之谜
来源:互联网 发布:zyfile.js插件 编辑:程序博客网 时间:2024/05/16 18:59
观看几个程序片段,分析行为
1、
<pre name="code" class="java"><span style="font-size:18px;">public static boolean fun(){try{return false;}finally{return true;}}System.out.println(fun());</span>
2、
<span style="font-size:18px;">public static boolean fun(){try{return false;}finally{System.out.println("finally");}}System.out.println(fun());</span>
3、
<span style="font-size:18px;">public static void fun(){try{System.out.println("try");System.exit(0);}finally{System.out.println("finally");}}fun();</span>
结果:
1、true
2、finally
false
3、try
可以看到return,finally,exit的组合会出现不同的情况,分析finally块是何时发生的。
try-finally语句中,finally语句块总是控制权离开try语句块时发生,无论try语句块时正常结束,还是意外结束。
意外情况:
1、抛出异常
2、封闭型语句执行了break,continue
3、出现return
那么exit算不算呢?应该算吧,毕竟它阻止了程序的顺序执行。
其实不是的。因为exit方法将要停止当前线程和所有其他当场死忙的线程,也就是说exit直接把try-finally的执行环境都灭了,更不要说把执行权给finally了。
0 0
- 异常之谜总结
- 异常之谜总结
- 异常之谜
- Java Puzzlers(4)异常之谜
- 异常谜题之关闭流
- Java谜题畅读版之异常谜题
- Java谜题畅读版之异常谜题
- Java解惑四:异常之谜
- 《Java 解惑》 第五章 异常之谜
- C++异常之异常说明
- Java异常之自定义异常
- 异常之_自定义异常
- Java异常之自定义异常
- JAVA异常之异常处理
- Java异常之自定义异常
- 异常之死
- C++之异常处理
- java基础教程之异常
- Best Time to Buy and Sell Stock IV--LeetCode
- Oracle中start with...connect by prior子句用法
- java 使用tcp协议发送json串获取服务器返回的json
- Android shape中的padding无效
- Linux学习笔记之:Linux账户管理
- 异常之谜
- CodeForces 534F Simplified Nonogram (记忆化搜索)
- xml文件动画
- kindedit 批量上传图片失败、调整弹出框大小、图片数量、图片大小
- android json解析
- 【算法之字符串(一)】KMP算法详解之下
- 关于金蝉平方数
- 国外的一些测试技术网站
- android的 color.xml