父类的多个构造方法各自抛出不同的异常,子类的构造方法应该抛出哪个/些异常?

越城市越分裂 发布于 2016/09/25 17:58
阅读 288
收藏 1

【情况描述】如下代码,在父类中定义了两个构造方法,各自throws不同的异常。当定义子类时,IDE会提示需要显示定义构造方法来抛出父类构造方法的异常。很自然地认为应该抛出父类所有构造方法的异常,然而只抛出任意一个父类构造方法的异常都可以通过运行!这很纳闷,很难理解

---------------父类--------------------
import java.io.IOException;
import java.rmi.RemoteException;

public class Parent {
protected Parent() throws IOException{
System.out.println("IOException");
}
protected Parent(int i) throws RemoteException{
System.out.println("RemoteException:"+i);
}
}

---------------子类--------------------

import java.io.IOException;

public class Sub extends Parent {
public Sub(int i) throws IOException{
super(i);
System.out.println("construtor in sub");
}
}

在子类构造方法中,哪怕在其中调用父类的会抛出RemoteException异常的构造方法,然而子类构造方法只需抛出任意一个构造方法的异常(即使抛出的是另外一个构造方法的异常,如上throws IOException)即可运行

【疑问】

父类的多个构造方法各自抛出不同的异常,子类的构造方法应该抛出哪个/些异常?


加载中
0
林桐
RemoteException 继承自 IOException  
返回顶部
顶部