Предположим, что мы имеем эту проблему
public class Father{
public void method1(){...}
}
public class Child1 extends Father{
public void method1() throws Exception{
super.method1();
...
}
}
Child1
extends Father
и переопределяет method1
, но с учетом реализации Child1.method1
теперь выдает исключение. Это не будет компилироваться, поскольку метод переопределения не может генерировать новые исключения.
Какое наилучшее решение?
- Распространять необходимое исключение на
Father
. Для меня это против инкапсуляции, наследования и общего ООП (Father
потенциально генерирует исключение, которое никогда не произойдет). - Вместо этого используйте
RuntimeException
? Это решение не будет распространятьException
наFather
, но документы Oracle и другие источники утверждают, что класс исключений должен использоваться, когда "Клиентский код не может ничего сделать". Это не тот случай, это исключение будет полезно для восстановления blablabla (почему это неправильно использоватьRuntimeException
вместо?). - Другое..