请在下面找到我的代码,我希望在覆盖抛出异常时清除我的概念。以下将提供代码工作,如果是,那么为什么。我问的是这个问题,因为IOException和ArithmeticException之间没有直接的父子关系。
public class TestExceptionChild {
public static void main(String[] args) {
Parent parent = new Child();
try {
parent.msg();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Parent{
void msg() throws IOException{
System.out.println("parent");
}
}
class Child extends Parent{
void msg() throws ArithmeticException{
System.out.println("child");
}
}
答案 0 :(得分:1)
这样可行,但只是因为ArithmeticException
扩展RuntimeException
(即它不是一个经过检查的异常,所以此处不需要使用throws
子句)。如果使用已检查的异常而不是ArithmeticException
,则必须是或扩展类型IOException
。否则,您将收到编译错误。
所以要回答你的问题,是的,层次结构对已检查的例外非常重要。有关详细信息,请参阅here。