繁体   English   中英

是什么让子类(即 RuntimeException 未检查)和 Exception 被检查成为可能?

[英]What make it possible that child class i.e. RuntimeException is unchecked and Exception is checked?

是什么让编译器认为RuntimeException未检查,但RuntimeException也是Exception类型。 但是Exception是检查异常吗?

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

JLS 11 > 异常 > 异常的种类

这是规则,编译器知道它。 给定异常是RuntimeException的子类(假设givenException instanceof RuntimeException )这一事实足以让编译器不将其视为已检查异常。

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

RuntimeException及其所有子类统称为运行时异常类。

JLS 11 > 异常 > 异常的种类

Java 编译器将ErrorRuntimeException都指定为Throwable两个特殊子类,以指示您无法预料的异常类型,因此编译器无法强制您在编译时处理它。 任何扩展这两RuntimeExceptionErrorRuntimeException )的任何类都将继承编译器的相同处理方式。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM