0

我对已检查/未检查的异常感到困惑。我认为 RunTimeException 是未经检查的异常,那么为什么它属于 Exception 类?

考虑一个案例..我的超类构造函数抛出 RunTimeException 而子类构造函数没有抛出任何东西..那么它不会在子类中给出任何编译时错误。为什么即使 RuntimeException 是未经检查的异常也会发生?

谢谢,Gunjan Shah。

4

1 回答 1

2

已检查异常是 Exception 的任何子类(或 Exception 本身),不包括类 RuntimeException 及其子类。

检查异常会迫使客户端程序员处理抛出异常的可能性。例如,java.io.FileInputStream 的 read() 方法抛出的 IOException

未经检查的异常是 RuntimeException 及其任何子类。类 Error 及其子类也未选中。

但是,对于未经检查的异常,编译器不会强制客户端程序员捕获异常或在 throws 子句中声明它。事实上,客户端程序员甚至可能不知道异常可能会被抛出。例如,String 的 charAt() 方法抛出的 StringIndexOutOfBoundsException。

必须在编译时捕获已检查的异常。运行时异常不需要。错误通常是不可能的,因为它们往往是不可恢复的。

于 2012-05-09T07:51:47.813 回答