Exception 和 RuntimeException 都继承自 Throwable 并且没有实现任何接口来判断它们是否被检查。
哪里指定了 Exception 被检查并且 RuntimeException 未被检查?它是在语言或 JVM 中硬连线的吗?
它在Java 语言规范部分 11.1.1 中定义。
Throwable它的所有子类统称为异常类。
Exception是普通程序可能希望从中恢复的所有异常的超类。
Error是普通程序通常不会从中恢复的所有异常的超类。
Error及其所有子类统称为错误类。[...]
该类
RuntimeException是 的直接子类Exception。RuntimeException是所有异常的超类,在表达式计算期间可能由于多种原因抛出这些异常,但仍然可以从中恢复。
RuntimeException及其所有子类统称为运行时异常类。未经检查的异常类是运行时异常类和错误类。
已检查异常类是除未检查异常类之外的所有异常类。也就是说,被检查的异常类都是
Throwableother thanRuntimeException及其子类Error和及其子类的子类。