为什么运行时异常是未选中的异常?
2022-09-02 03:16:31
通常,如果任何类扩展,它将成为检查异常。 还扩展了异常。那它怎么样呢?Exception
Runtime exception
unchecked exception
他们是否为这种特殊情况提供了自定义签入编译器?
编辑:我对检查v / s未检查的异常及其优点和cos等有适当的想法。我不接受他们之间的答案差异。
通常,如果任何类扩展,它将成为检查异常。 还扩展了异常。那它怎么样呢?Exception
Runtime exception
unchecked exception
他们是否为这种特殊情况提供了自定义签入编译器?
编辑:我对检查v / s未检查的异常及其优点和cos等有适当的想法。我不接受他们之间的答案差异。
它明确地在规范的第 11.1.1 节中:
RuntimeException
其所有子类统称为运行时异常类。未经检查的异常类是运行时异常类和错误类。
已检查的异常类是除未选中的异常类之外的所有异常类。也就是说,已检查的异常类是 Throwable 的所有子类,而不是 RuntimeException 及其子类和 Error 及其子类。
所以,是的,编译器肯定知道.RuntimeException
是的。任何都是已检查的例外,但 、 和 (直接或间接) 子类除外。Throwable
Error
RuntimeException
但是,这些由编译器检查,而不是由JVM检查;已检查的异常是编译时功能,而不是运行时功能。(更新:我现在看到你已经编辑了你的问题,指定“编译器”而不是“JVM”。 ☺
进一步阐述一下。 。 。这并不是说有任何“检查异常”接口。逻辑只是硬编码:“任何异常类都是已检查的异常,除非它是 或 的子类型。RuntimeException
Error