Declarar e lançar uma exceção

2 respostas
P

Amigos,
Não entendi o que o livro da Kathy Sierra diz na página 162 para a prova 1.4, " Se você quiser relançar a exceção … que capturou, terá que declará-la".
alguém poderia exemplificar isso, porque não entendi ?
Obrigado.

2 Respostas

L

Se vc fizer um catch em uma exceção checada e quiser lançá-la para quem chamou o método onde este catch está, então você precisa que a declaração do seu método explicite que ele pode lançar esta exceção.

Exemplo:

public void metodo1() throws MinhaException{
   
   try{
      this.outroMetodo();
   }catch(OutraException oe){
      //voce faz isso porque o outroMetodo lança uma exceção que este aqui não pode lançar.
   }

}

Se você quiser lançar a exceção do tipo OutraException, então seu método precisa declará-la.

public void metodo1() throws MinhaException, OutraException{
   
   try{
      this.outroMetodo();
   }catch(OutraException oe){
      //agora você pode lançá-la e nem precisaria do catch.
      throw oe;
   }

}

Se você tentar este usar este código sem declarar a OutraException no método, então você encontraria um erro de compilação.

:wink:

LPJava

lembra da regrinha: “Você deve tratar ou declarar uma exceção” ou seja seu metodo deve tratar a exceção ou passar ela para quem chamou aquele metodo… porém relançar uma exceção o método deve declarar senao o codigo nao compila, ja que vai estar quebrando a regra veja:

class Regr{
static void moeda() throws Exception{
throw new Exception();
}
public static void main(String args[]){
try{
moeda();
}
//aqui ele trata a exceção lançada pelo metodo moeda
catch(Exception e){
throw  e;
// mais e essa aqui que foi relançada quem ta declarando(throws) ou //tratando?(Ninguem)
}
}}

Ai vc está quebrando a regra… de quando uma exceção for Verificada vc deve tratar ou declarar essa exceção… entao para funciona so basta acrescentar isso:

public static void main(String args[]) throws Exception{
.....
}

Espero ter ajudado :smiley:

Criado 1 de agosto de 2007
Ultima resposta 2 de ago. de 2007
Respostas 2
Participantes 3