Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当超级类默认构造函数有一个';抛出';条款_Java_Exception - Fatal编程技术网

Java 当超级类默认构造函数有一个';抛出';条款

Java 当超级类默认构造函数有一个';抛出';条款,java,exception,Java,Exception,当我运行下面的代码时,我遇到了未报告的异常 我的代码如下所示 class Super { public Super() throws Exception { System.out.println("Super Class"); } } public class Sub extends Super { public static void main(String[] args) throws Exception { Su

当我运行下面的代码时,我遇到了未报告的异常

我的代码如下所示

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
公共类子类扩展超级{

1错误

您尚未为Sub定义默认构造函数,Super正在报告已检查的异常。若要修复此错误,请将此构造函数添加到Sub:

public Sub() throws Exception {
    super();
}

Eclipse正在报告下面的代码,并拒绝编译代码

默认构造函数无法处理隐式超级构造函数引发的异常类型异常。必须定义显式构造函数


因此,您必须显式定义一个这样做的构造函数。

所有类的默认构造函数默认调用超级类默认构造函数。现在,当您的超级类构造函数引发异常时,当子类构造函数调用超级类构造函数时,它需要处理或引发异常。

现在在您的类中,您还没有提到任何构造函数,所以编译器将创建一个默认构造函数,并将super()作为super()调用抛出异常,而您的构造函数没有抛出/处理任何异常,它将无法编译。

我同意Jalynn2。另一个解决方案是对RuntimeException进行异常处理,因为您没有在该构造函数中提出任何特别的问题

class Super {
  public Super() throws RuntimeException {    
    System.out.println("Super Class");    
  }
}

谢谢你的ans,我得到的结果没什么大不了的,但是你不需要显式调用super()-编译器会自动完成这项工作。