Suppose we have this problem
public class Father{
public void method1(){...}
}
public class Child1 extends Father{
public void method1() throws Exception{
super.method1();
...
}
}
Child1 extends Father and overrides method1 but given the implementation Child1.method1 now throws a exception. This won't compile as the overriding method can't throw new exceptions.
What is the best solution?
- Propagate the required exception to the
Father. To me this is against encapsulation, inheritance and general OOP (theFatherpotentially throws an exception that will never happen). - Use a
RuntimeExceptioninstead? This solution won't propagate theExceptionto theFather, but Oracle docs and other sources state that class of exceptions should be used when "Client code cannot do anything". This is not that case, this exception will be useful to recover blablabla (why is it wrong to useRuntimeExceptioninstead?). - Other..