Java 是什么使子类,即RuntimeException,被取消选中并检查异常成为可能?
是什么使编译器可能认为Java 是什么使子类,即RuntimeException,被取消选中并检查异常成为可能?,java,exception-handling,runtimeexception,Java,Exception Handling,Runtimeexception,是什么使编译器可能认为RuntimeException未检查,尽管RuntimeException也属于Exception类型。但是Exception是否选中了Exception?Java编译器将Error和RuntimeException指定为Throwable的两个特殊子类,以指示您无法预料的异常类型,因此编译器无法强制您在编译时处理它。任何扩展这两个子类(Error和RuntimeException)的类都将继承编译器的相同处理 通常,对于运行时无法预料的事情,例如使用超出其容量的索引访问
RuntimeException
未检查,尽管RuntimeException
也属于Exception
类型。但是Exception
是否选中了Exception?Java编译器将Error
和RuntimeException
指定为Throwable
的两个特殊子类,以指示您无法预料的异常类型,因此编译器无法强制您在编译时处理它。任何扩展这两个子类(Error
和RuntimeException
)的类都将继承编译器的相同处理
通常,对于运行时无法预料的事情,例如使用超出其容量的索引访问数组,您应该依赖运行时异常。此外,应用程序通常不会恢复运行时异常和错误。这就是为什么作为一种良好的开发实践,您应该只依赖它们作为处理异常的默认模式
也就是说,选中的异常类是Throwable
及其所有子类,而不是RuntimeException
及其子类和Error
及其子类
这是规则,编译器知道这一点。给定的异常是RuntimeException
的子类(比如givenException instanceof RuntimeException
)这一事实足以使编译器不将其视为已检查异常
类RuntimeException
是Exception
的直接子类RuntimeException
是所有异常的超类,这些异常在表达式求值期间可能由于多种原因引发,但仍然可以从中恢复
RuntimeException
及其所有子类统称为运行时异常类