假设我们有这个问题
public class Father{
public void method1(){...}
}
public class Child1 extends Father{
public void method1() throws Exception{
super.method1();
...
}
}
Run Code Online (Sandbox Code Playgroud)
Child1扩展Father和覆盖,method1但鉴于实现Child1.method1现在抛出异常.这不会编译,因为重写方法不能抛出新的异常.
什么是最好的解决方案?
Father.对我而言,这是针对封装,继承和一般OOP(Father可能引发永远不会发生的异常).RuntimeException代替?此解决方案不会传播Exception到Father,但Oracle文档和其他来源声明,当"客户端代码无法执行任何操作"时,应使用该类异常.这不是那种情况,这个例外对于恢复blablabla很有用(为什么使用它是错误的RuntimeException?).