假设我们有这个问题
public class Father{
public void method1(){...}
}
public class Child1 extends Father{
public void method1() throws Exception{
super.method1();
...
}
}
Child1
扩展Father
和覆盖method1
,但给定的实现Child1.method1
现在抛出异常。这不会编译,因为覆盖方法不能抛出新的异常。
什么是最好的解决方案?
- 将所需的异常传播到
Father
. 对我来说,这是反对封装、继承和一般 OOP(Father
可能会引发永远不会发生的异常)。 - 使用 a
RuntimeException
代替?此解决方案不会传播Exception
到Father
,但 Oracle 文档和其他来源指出,当“客户端代码无法执行任何操作”时,应使用该类异常。不是这种情况,这个异常对恢复blablabla很有用(为什么改用是错误的RuntimeException
?)。 - 其他..