Java - 在已实现/重写的方法中抛出异常

时间:2014-09-06 21:31:12

标签: java exception-handling override

寻找以下验证:

在实现/重写的方法中,Java仅关注声明被抛出的已检查异常。

例如:到界面:

interface INT { void mm() throws IOException, ArrayIndexOutOfBoundsException; }

class Some implements INT {
    void mm() {...}
    // ...
}

没有给出检查错误。以下内容(因为NullPointerExceptionRunimeException):

class Some implements INT {
    void mm() throws NullPointerException {...}
    // ...
}

class Some implements INT {
    void mm() throws ActivationException {...}
    // ...
}

给出编译器错误,因为ActivationException是一个经过检查的异常,并且它的超类实现不会抛出它(或它的子类)。

请注意:

class Some implements INT {
    void mm() throws IndexOutOfBoundsException {...}
    // ...
}

不会给出编译时错误,尽管IndexOutOfBoundsException超出ArrayIndexOutOfBoundsException,因为它们是运行时异常。

另请注意:

class Some implements INT {
    void mm() throws Exception {...}
    // ...
}

给出了一个检查错误,因为Exception也可以是一个已检查的异常,并且超出了被覆盖的异常。

总的来说,

声明在重写方法中抛出的异常仅在编译错误时才会出现编译器错误,如果它是一个已检查的异常并且它不是(或者它的超类型不是)被抛出超类的重写方法。

exception handling in the implemented method更加精细和广泛。再问一遍 - 无法得到答案 那里有更窄的版本。

TIA。

0 个答案:

没有答案