java - Exceptions 与 throws 子句不兼容的原因是什么?

标签 java exception exception-handling

谁能告诉我异常的原因是什么,而不是与“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/

相关文章:

python - 了解非平凡情况下生成器内部的 StopIteration 处理

c# - 错误处理 我应该抛出异常吗?还是源头处理?

java - 空指针异常 - 从 fragment 加载新 Activity

java - 使用 Scanner 类时如何忽略 .txt 的第一行

java - 当输入字符串而不是整数时创建 Java 异常

c++ - 不使用异常从表达式中间退出

bash - perl 脚本结束时会发生什么?

java - OkHttp 回调吞噬异常 - 设计缺陷或常见做法

python - 如何在 Python 中获取完整的异常堆栈跟踪

Java 列表过滤