为什么运行时异常是未选中的异常?

2022-09-02 03:16:31

通常,如果任何类扩展,它将成为检查异常。 还扩展了异常。那它怎么样呢?ExceptionRuntime exceptionunchecked exception

他们是否为这种特殊情况提供了自定义签入编译器

编辑:我对检查v / s未检查的异常及其优点和cos等有适当的想法。我不接受他们之间的答案差异。


答案 1

它明确地在规范的第 11.1.1 节中

RuntimeException其所有子类统称为运行时异常类

未经检查的异常类是运行时异常类和错误类。

检查的异常类是除未选中的异常类之外的所有异常类。也就是说,已检查的异常类是 Throwable 的所有子类,而不是 RuntimeException 及其子类和 Error 及其子类。

所以,是的,编译器肯定知道.RuntimeException


答案 2

是的。任何都是已检查的例外,但 、 和 (直接或间接) 子类除外。ThrowableErrorRuntimeException

但是,这些由编译器检查,而不是由JVM检查;已检查的异常是编译时功能,而不是运行时功能。(更新:我现在看到你已经编辑了你的问题,指定“编译器”而不是“JVM”。 ☺


进一步阐述一下。 。 。这并不是说有任何“检查异常”接口。逻辑只是硬编码:“任何异常类都是已检查的异常,除非它是 或 的子类型。RuntimeExceptionError