Java如何知道RuntimeExceptions未经检查?

Dan*_*ira 3 java exception-handling

Java编译器如何知道java.lang.RuntimeException它的子类是未经检查的,因为它们是继承的java.lang.Exception,这是一个经过检查的异常?我查看了代码,似乎没有任何内容告诉编译器.

ass*_*ias 8

因为它在语言#11.1.1规范中以这种方式定义:

  • 未经检查的异常类是运行时异常类和错误类.
  • 已检查的异常类是除未经检查的异常类之外的所有异常类.也就是说,已检查的异常类都是Throwable的子类,而不是RuntimeException及其子类和Error及其子类.

因此,它不是各种异常类的代码的一部分,它只是由语言定义的约定,编译器必须实现符合要求.