以下代码片段来自OCA / OCP Java SE 7 Programmer 1& 2 Kathy Sierra和Bert Bates的学习指南。
public void rethrow() throws SQLException, IOException {
try {
couldThrowAnException();
} catch (Exception e) { // watch out: this isn't really
// catching all exception sublclasses
log(e);
throw e; // note: won't compile in Java 6
}
}
第393页的文本指出“您可能已经注意到,couldThrowAnException()实际上并没有抛出异常。编译器不知道这一点。方法签名是编译器的关键。它不能假设没有异常抛出,因为子类可以覆盖该方法并抛出异常。“
这不是错误的或至少是误导性的,因为子类不能声明新的或更广泛的检查异常。或者我错过了什么?
如果是,作者在这里引用未经检查的例外情况?但是编译器并不关心未经检查的异常。我错过了在这里提出的观点。请有人帮我理解。感谢。