如果扩展接口(如果实现接口,则同样适用),则无法覆盖方法并使该方法抛出比原始方法 更多的 检查异常。您可以抛出相同或更少但不能更多的东西。
考虑一下:
interface A { void foo();}interface B extends A { void foo() throws IOException;}A a = new B() { ... }a.foo();可能会引发IOException,但您无法知道。这就是为什么你不能这样做。
这当然是完全可以接受的:
interface A { void foo() throws IOException;}interface B extends A { void foo();}A a = new B() { ... }try { a.foo();} catch (IOException e) { // must catch even though B.foo() won't throw one}BookNotFoundException但是,您可以扩展
RuntimeException或
RemoteException。但不确定这是否是一个好方法。



