课后习题
1、改写第4章的五子棋游戏程序,为该程序增加异常处理机制,让程序更加健壮。
2、改写第8章的梭哈游戏程序,为该程序增加异常处理机制。
练习书上的例子并说出他想表达的意思。
补充练习
1、练习和了解Exception类体系。
2、在catch块中使用continue语句,看下行不行这样做。
3、说出使用try…catch…finally块自动回收资源的三种方式。并设计3个例子练习。
4、说出final修饰和有效的final分别是什么?有什么用处?怎么实现?
5、p381的java设计哲学:没有完善错误处理的代码根本就不会被执行。这句话怎么理解?编译报错,只要加上try catch语句就能够执行了吗?
6、说出checked异常和Runtime异常的含义,以及他们的区别和联系是什么,还有各自的优劣性。
区别:checked异常,如果不放在try内部,或者不声明抛出,就无法通过编译。而runtime异常不放在try块中,或者声明抛出却可以通过编译。(有一定猜测的成分。)。
还有猜测一点:runtime异常会自动由调用者处理吗?
7、说出为什么要使用throws。以及如何使用,在什么情况使用。尝试自己写一个dog类,并且构造器抛出IOException
8、p383的,将会导致方法签名与异常耦合的含义是什么?
9、说出方法重写时声明抛出异常的限制是什么?
10、说出如何自定义异常类。并且自己写一个自定义异常类。
11、练习catch和throw同时使用,多个方法协作处理一个异常。并说出这样子的作用和什么时候应该使用?
12、尝试使用System.err.println,并说出他的作用,以及其他的比如.out.还有一些,进行练习。
13、说出java6和java7中catch和throw同时使用的区别。
14、说出异常链的含义和作用以及怎么实现。说出异常转译是什么意思。
15、p388提到了23种设计模式,除了职责链模式(异常链),其他的22种分别是什么?有什么作用?怎么实现?
16、Throwable的子类构造器,cause参数是什么?
17、了解java的异常跟踪栈,并且设计例子,练习普通的跟踪栈和线程中的跟踪栈。并尝试一层层的throws后,异常跟踪栈会怎么显示?p391的看到更加复杂的异常跟踪栈是print会还是不print会?
18、说出成功的异常处理,应该实现的目标是什么?如何实现这些目标?
19、为什么不要过度使用异常?什么是过度使用异常?
20、理解异常处理机制的初衷。以及如何合理的使用异常处理机制。
21、为什么不要使用过度庞大的try块?
22、为什么要避免使用Catch All语句。
23、为什么不要忽略捕获到的异常?应该怎么处理它们?
要练习java文档的类
1、p374的那个图里的类都看看。