Java中关于子类覆盖父类的抛出异常问题
发布于 2020-8-4|
复制链接
分享一篇关于关于Java中关于子类覆盖父类的抛出异常问题,小妖觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小妖来看看吧
Java中子类覆盖父类方法抛出异常不能比父类多,这个表述不够准确。准确一点的描述为:子类抛出的异常类型不能比父类抛出的异常类型更宽泛。假设父类抛出异常ParentException,另外有两个子类继承自ParentException分别为ChildException1, ChildException2, 那么 子类可以同时抛出异常ChildException1,ChildException2. 满足“子类抛出的异常类型不能比父类抛出的异常类型更宽泛”,这一条件。注意:子类也可以选择不进行抛出任何异常,即使他们是父类所定义的异常。为什么Java设计成这样,下面举个例子进行分析:
```java
package exceptions;
class Sick extends Exception{}
class FeverSick extends Sick{}
class JointSick extends Sick{}
class Children extends People{
public void coldAir() throws FeverSick{ }
}
class Adults extends People{
public void coldAir(){}
}
class Olds extends People{
public void coldAir() throws JointSick{ }
}
public class People {
public void coldAir() throws Sick{ }
}
```