Java 继承中异常的处理
父类的方法需要抛出异常,子类继承(重写)了父类的方法,那么:
- 子类的方法是否要同样抛出异常?
- 是否抛出同样的异常?
- 能否抛出父类没有的异常?
- 还是一定要抛出父类所抛出异常范围内的异常?
子类中重写的方法一定不能抛出新的必检异常,即不能抛出比父类中的方法更加宽泛的必检异常。
Error 和 RuntimeException 及其子类称为免检异常,除了 RuntimeException 之外的 Exception 称为必检异常(RuntimeException 是 Exception 的子类) 。
例如: 父类的一个方法申明了一个检查异常 IOException ,在重写这个方法是就不能抛出 Exception ,只能抛出 IOException 的异常及其子类异常,也可以抛出免检异常。
总结:
- 子类重写父类方法所抛出的异常不能超过父类的范畴。
- 子类重写父类方法要抛出与父类相同的异常(或其子类)。
- 子类重写父类方法可以任意抛出免检异常。
- 子类重写父类方法可以不抛出异常。