16.4.2 为什么抛出的异常一定是已检查异常
答:RuntimeException与Error可以在任何代码中产生。它们不需要由程序员显式地抛出,一旦出现错误,那么相应的异常会被自动抛出。
而已检查异常是由程序员抛出的,这分为两种情况:程序员调用会抛出异常的库函数(库函数的异常由库程序员抛出)、程序员自己使用throw语句抛出异常。遇到Error,程序员一般是无能为力的,遇到RuntimeException,那么一定是程序存在逻辑错误,要对程序进行修改(相当于调试的一种方法)。
只有已检查异常才是程序员所关心的,程序应该抛出或处理已检查异常。覆盖父类某方法的子类方法,不能抛出比父类方法更多的异常。有时设计父类的方法时,会声明抛出异常,但实现方法的代码却并不抛出异常。这样做的目的就是,方便子类方法覆盖父类方法时可以抛出异常。