Herança e Exceção

3 respostas
AdrianoRibeiro

Bom dia senhores, eu denovo (antes era Madara) agora corrigi o nome.

Ainda nos meus estudos, ví a situação abaixo, o que não faz sentido para mim. Pelo que eu soube, não se deve lançar exceções verificadas novas ou mais abrangentes.
public class Avo{
	/*Não há exceções nos metodos da classe Avo*/
	public void getClasse1(){}
	public void getClasse2(){}
	public void getClasse3(){}
	public void getClasse4(){}
	public void getClasse5(){}

}

class Neto extends Avo{
	/*[b]Nesta classe eu estou sobreescrevendo os métodos lançando uma exceção.[/b]*/
	public void getClasse1() throws ArithmeticException {} //Compila
	public void getClasse2() throws NumberFormatException {} //Compila
	public void getClasse3() throws NullPointerException {} //Compila
	public void getClasse4() throws Exception {} //Não Compila
	public void getClasse5() throws IOException {} //Não Compila
}
Minha dúvida é o seguinte, na classe Avó é lançada alguma exceção de forma oculta?

Obrigado.

3 Respostas

Rodrigo_Sasaki

Não.

Na classe Avo você não lança nenhuma exceção em nenhum dos métodos, portanto quando for sobrescrevê-los, você não pode lançar nenhuma exceção verificada.

Então porque a sobrescrita dos métodos getClasse1, 2 e 3 compila? Justamente porque as exceções lançadas ali não são verificadas :slight_smile:

Dica: Exceções não-verificadas são as que herdam de RuntimeException

Arthur_F_Ferreira

Exception e IOException não compilam o seu código porque elas são Checked exceptions, ou seja, você é obrigado a tratá-las. Como na superclasse os métodos não possuem esse lançamento, a regra de override não funciona. Para funcionar, ou você remove o lançamento dos métodos sobrescritos ou você implementa eles na superclasse.

Em herança, as responsabilidades também são herdadas, incluindo exception.

AdrianoRibeiro

Eita, então lí errado, achei que ArithmeticException e NumberFormatException fossem checadas. Comi mosca. Obrigado pessoal.

Criado 20 de dezembro de 2012
Ultima resposta 20 de dez. de 2012
Respostas 3
Participantes 3