读<<Java解惑>>后的碎嘴子(第四章)

5 篇文章 0 订阅
2 篇文章 0 订阅
第四章--异常问题
36.
boolean decision() {
try {
   return true;
} finally {
   return false;
}
}
返回是什么呢?印象中finally的返回好像是要给try中的返回让路的啊?但是返回的是false,具体的要复习异常的顺序特性
总结:在finally一定要正常的结束(不要有return,break,continue,throw),就算里面有受查异常,也要在里面处理

37.代码比较多,大师豪爽的给了3个例子,前两个其实不重要,最后一个很容易被忽视,接口A扩展了多个声明各种了throws方法的接口,那么实现接口A的类里的相应方法,能throws的异常是这些接口方法声明中的交集而不是并集,在这里用简短的话表达比较难以理解,请见原书
总结:声明的异常在继承体系中传递规律要深刻理解

38.这条太学术了,相信IDE就好了

39.
try {
    System.out.println("Hello world");
    System.exit(0);
} finally {
    System.out.println("Goodbye world");
}
答案应该看得出来,这次finally永远不会被执行了,大师还大致地描述了VM关闭时的一些过程
总结:当调用System.exit(int i),会运行所有注册的shutdownHook

40.
public class Test {	
    private Test instance = new Test();		
    public static void main(String... args){		
        Test test = new Test();	
    }
}
把例子给简化了,这种互相依赖的死循环还是经常会搞出来的,这条其实和异常没什么关系了,解决方法是很简单的
总结:field初始化顺序优先于其构造方法执行

41.这是个经典的IO关闭问题
总结:要注意各种流的close()方法也是会抛出IOException的,如果你手快在方法声明上写了throws IOException会隐藏这个隐患,同时根据36条,要在内部处理掉这样的异常

42.这个例子其实没问题,在这里说明&和&&的区别好像有点牵强
总结:不要把异常处理参与到正常的逻辑中,这是个基本常识,非要再加一条的话,就是类似&和&&这样的不要写混,IDE是不会提示这样的问题的

43.这里并不是要讨论为什么要禁用Thread.stop()和Thread.suspend()方法,而是要意识到在方法中throw受查异常是可以通过一些手段,不在声明中写throws的,这条看得不是很懂,它很不面向应用开发者
总结:不要再使用任何Deprecated方法,不仅仅是未来会删除的问题,还有就是反射是可以打破常规的

44.这条可以说是从开始到这里最精彩的一条了,也是难度最大的一条,很短的代码引发出奇异的原因,这就是大师和凡人的差距
总结:每个人都应该看看这条,尽管你平时碰不到这样的问题

45.本章这最后一条,明显是bloch大师的个人秀
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值