什么使子类(即RuntimeException)未选中和Exception被选中?

时间:2018-12-23 00:48:19

标签: java exception-handling runtimeexception

通过RuntimeException也是RuntimeException类型的编译器认为Exception未选中是什么。但是Exception是否被检查为异常?

2 个答案:

答案 0 :(得分:1)

  

也就是说,检查的异常类是Throwable及其除RuntimeException及其子类以及Error及其子类之外的所有子类。

     

JLS 11 > Exceptions > The Kinds of Exceptions

这就是规则,编译器已经知道了。给定的异常是RuntimeException的子类(比如说givenException instanceof RuntimeException)的事实足以使编译器不将其视为已检查的异常。

  

RuntimeExceptionException的直接子类。 RuntimeException是所有异常的超类,这些异常可能在表达式求值过程中由于多种原因而抛出,但仍然可以从中进行恢复。

     

RuntimeException及其所有子类共同是运行时异常类。

     

JLS 11 > Exceptions > The Kinds of Exceptions

答案 1 :(得分:0)

Java编译器将ErrorRuntimeException都指定为Throwable的两个特殊子类,以指示您无法预期的异常类型,因此编译器无法强制您执行以下操作:在编译时处理它。扩展这两个子项(ErrorRuntimeException)中任何一个的类将由编译器继承相同的处理方式。

通常,对于运行时无法预期的事情,例如,使用超出其容量的索引访问数组,您应该依赖运行时异常。另外,您的应用程序通常不会恢复运行时异常和错误。这就是为什么作为良好的开发实践,您只应将它们作为处理异常的默认模式。