为什么运行时异常是未经检查的异常?

Pri*_*shi 19 java exception runtimeexception

通常,如果任何类扩展Exception,它将成为检查异常.Runtime exception还扩展了Exception.那怎么回事unchecked exception

对于这种特殊情况,它们是否有自定义检入编译器

编辑: 我对检查v/s未经检查的异常和他们的优点和cos等有正确的想法.我没有他们在答案之间的差异.

Jon*_*eet 25

它在规范11.1.1中明确说明:

RuntimeException它的所有子类统称为运行时异常类.

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

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

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

  • @UnKnown:不,您不希望您编写的每个方法都必须捕获或声明NullPointerException ...这太糟糕了。 (2认同)

rua*_*akh 9

是.任何Throwable一个检查的异常,除了Error,RuntimeException和它们的(直接或间接)的子类.

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


进一步详细说明...它不像是有任何"检查异常"界面.逻辑只是硬编码:"任何异常类都是经过检查的异常,除非它是子类型RuntimeExceptionError".