在这种情况下,重写方法是否可以重新抛出异常

时间:2016-08-01 17:37:00

标签: java exception

以下代码片段来自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()实际上并没有抛出异常。编译器不知道这一点。方法签名是编译器的关键。它不能假设没有异常抛出,因为子类可以覆盖该方法并抛出异常。“

这不是错误的或至少是误导性的,因为子类不能声明新的或更广泛的检查异常。或者我错过了什么?

如果是,作者在这里引用未经检查的例外情况?但是编译器并不关心未经检查的异常。我错过了在这里提出的观点。请有人帮我理解。感谢。

0 个答案:

没有答案