java中关于异常的不解?

例子:

class Exception1 extends Exception {
}

class Exception2 extends Exception {
}

class One {
    public void test() throws Exception1 {
    }
}

interface Two {
    public void test() throws Exception2;
}

public class TestException extends One implements Two {
    @Override
    public void test() {
    }
}

java编程思想中关于上面解释:
Two接口定义的方法test()。这个方法相比类One的test()方法抛出新的异常Exception2,如果TestException类在扩展One类的同时又实现了Two接口,那么Two接口里的test()方法就不能改变在One中的
test()方法的异常接口。否则的话,在使用基类的时候就不能判断是否捕获了正确的异常,所以这也很合理。
疑惑:
我上面在TestException类中定义了一个新的test()方法,整体代码也无报错,现在接口Two不是在原来One基础上改变了抛出的异常接口,与java编程思想所说“**那么Two接口里的test()方法就不能改变在One中的
test()方法的异常接口**”不太符合啊?

阅读 1.1k
1 个回答

override的方法不可以抛更大的异常,可以抛更小的异常,也可以不抛异常

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题