Excepção e Herança em Java
Suponha que tenhamos esse problema
public class Father{
public void method1(){...}
}
public class Child1 extends Father{
public void method1() throws Exception{
super.method1();
...
}
}
Child1
estendeFather
e substituimethod1
mas dada a implementaçãoChild1.method1
agora lança uma exceção. Isso não será compilado, pois o método de substituição não pode lançar novas exceções.
Qual é a melhor solução?
Propagar a exceção necessária para oFather
. Para mim, isso é contra o encapsulamento, herança e OOP geral (oFather
potencialmente lança uma exceção que nunca acontecerá).Use umRuntimeException
em vez de? Esta solução não irá propagar oException
aoFather
, mas documentos do Oracle e outras fontes afirmam que a classe de exceções deve ser usada quando "Código do cliente não pode fazer nada". Este não é o caso, esta exceção será útil para recuperar blablabla (por que é errado usarRuntimeException
em vez de?).De outros..