当我运行以下代码
时,我收到了未报告的异常我的代码如下所示
class Super {
public Super() throws Exception {
System.out.println("Super Class");
}
}
public class Sub extends Super {
public static void main(String[] args) throws Exception {
Sub s = new Sub();
}
}
发生以下错误:
Sub.java:6:默认构造函数中未报告的异常java.lang.Exception
公共类Sub延伸超级{
1错误
答案 0 :(得分:11)
您尚未为Sub定义默认构造函数,Super正在报告已检查的异常。要修复它,请将此构造函数添加到Sub:
public Sub() throws Exception {
super();
}
答案 1 :(得分:2)
Eclipse报告以下代码并拒绝编译代码。
默认构造函数无法处理由隐式超级构造函数抛出的异常类型Exception。必须定义显式构造函数
因此,您必须明确定义一个构造函数。
答案 2 :(得分:2)
默认情况下,所有类的默认构造函数都调用超类默认构造函数。现在,当您的超类构造函数抛出异常时,当子类构造函数调用超类构造函数时,它需要处理异常或抛出异常。
现在你的类中没有提到任何构造函数,所以编译器会创建一个默认的构造函数并调用super(),因为super()抛出异常并且你的构造函数没有抛出/处理任何异常,它将无法编译
答案 3 :(得分:2)
我同意Jalynn2。另一个解决方案是对RuntimeException进行Exception,因为你没有在这个构造函数中特别提出任何东西。
class Super {
public Super() throws RuntimeException {
System.out.println("Super Class");
}
}