Wyjątek i dziedziczenie w Javie
Załóżmy, że mamy ten problem
public class Father{
public void method1(){...}
}
public class Child1 extends Father{
public void method1() throws Exception{
super.method1();
...
}
}
Child1
rozciąga sięFather
i nadpisujemethod1
ale biorąc pod uwagę wdrożenieChild1.method1
teraz zgłasza wyjątek. To się nie skompiluje, ponieważ nadrzędna metoda nie może rzucać nowych wyjątków.
Jakie jest najlepsze rozwiązanie?
Propaguj wymagany wyjątek doFather
. Dla mnie jest to przeciwko enkapsulacji, dziedziczeniu i ogólnemu OOP (Father
potencjalnie rzuca wyjątek, który nigdy się nie wydarzy).UżyćRuntimeException
zamiast? To rozwiązanie nie będzie propagowaćException
doFather
, ale Oracle docs i inne źródła podają, że klasy wyjątków powinny być używane, gdy „Kod klienta nie może nic zrobić”. Nie jest to przypadek, ten wyjątek będzie przydatny do odzyskania blablabla (dlaczego jest niewłaściwy w użyciuRuntimeException
zamiast?).Inny..