谁能告诉我异常的原因是什么,而不是与“throws”子句兼容
例如:
class Sub extends Super{
@Override
void foo() throws Exception{
}
}
class Super{
void foo() throws IOException{
}
}
异常异常与 Super.foo() 中的 throws 子句不兼容
最佳答案
没有完整的代码示例,我只能猜测:您正在重写/实现子类中的方法,但子类方法的异常规范与父类(super class)/接口(interface)的异常规范不兼容(即不是子类的子集)方法?
如果基方法被声明为完全不抛出异常,或者例如java.io.IOException
(这是 java.lang.Exception
的子类,您的方法试图在此处抛出)。基类/接口(interface)的客户端希望其实例遵守基方法声明的契约,因此从该方法的实现中抛出 Exception
会破坏契约(和 LSP )。
关于java - Exceptions 与 throws 子句不兼容的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10513374/