当我们通过扩展 Exception 类创建CustomException 时,编译器会对其进行检查,但即使 RuntimeExceptions 扩展了 Exception 类,编译器也不会对其进行检查。
这是如何在编译器中建立的。我在JLS中找到了一个部分说明原因。
为什么不检查
运行时异常 运行时异常类(RuntimeException 及其子类)免于编译时检查,因为根据 Java 编程语言设计者的判断,必须声明此类异常不会显着帮助确定正确性的节目。Java 编程语言的许多操作和构造都可能导致运行时异常。编译器可用的信息以及编译器执行的分析级别通常不足以确定不会发生此类运行时异常,即使这对程序员来说可能是显而易见的。要求声明这样的异常类只会让程序员感到恼火。
在标记接口的情况下,幕后是否发生了一些事情。
我正在寻找一些可以解释它是如何完成的以及为什么所有检查的异常都没有父类的来源?