我对选中/未选中的异常感到困惑。我认为RunTimeException是未经检查的异常,那么为什么它会在Exception类下面?
考虑一个案例..我的超类构造函数抛出RunTimeException而子类构造函数没有抛出任何东西..那么它将不会在子类中给出任何编译时错误。 为什么会发生RuntimeException是未经检查的异常?
Thaks, Gunjan Shah。
答案 0 :(得分:2)
已检查的异常是Exception(或Exception本身)的任何子类,不包括RuntimeException类及其子类。
进行异常检查会强制客户端程序员处理抛出异常的可能性。例如,java.io.FileInputStream的read()方法抛出的IOException
未经检查的异常是RuntimeException及其任何子类。类错误及其子类也未被选中。
但是,对于未经检查的异常,编译器不会强制客户端程序员捕获异常或在throws子句中声明它。事实上,客户端程序员可能甚至不知道可能抛出异常。例如,String的charAt()方法抛出StringIndexOutOfBoundsException。
必须在编译时捕获已检查的异常。不需要运行时异常。错误通常不可能,因为它们往往是不可恢复的。