为什么重写方法不能抛出比重写方法更宽的异常?我正在阅读Kathe塞拉利昂的SCJP 6(SCJP 6)一书,并偶然发现了在重写的方法中抛出异常的解释。我完全不明白。有人能给我解释一下吗?重写方法不得抛出新的或比重写的方法声明的异常范围更广的检查异常。例如,声明FileNotFoundException的方法不能被声明SQLException、异常或任何其他非运行时异常的方法覆盖,除非它是FileNotFoundException的子类。
3 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
class Super {
public void test() {
System.out.println("Super.test()");
}}class Sub extends Super {
@Override
public void test() throws IndexOutOfBoundsException {
// Method can throw any Unchecked Exception
System.out.println("Sub.test()");
}}class Sub2 extends Sub {
@Override
public void test() throws ArrayIndexOutOfBoundsException {
// Any Unchecked Exception
System.out.println("Sub2.test()");
}}class Sub3 extends Sub2 {
@Override
public void test() {
// Any Unchecked Exception or no exception
System.out.println("Sub3.test()");
}}class Sub4 extends Sub2 {
@Override
public void test() throws AssertionError {
// Unchecked Exception IS-A RuntimeException or IS-A Error
System.out.println("Sub4.test()");
}}添加回答
举报
0/150
提交
取消
