Classe Tratamento de Exceções

5 respostas
YuriSilva

Olá Pessoal.
Gostaria de saber de é possível criar uma classe que seja responsável por tratar qualquer tipo de execeção, assim no momento que entrar no bloco catch é chamado minha classe e lá dentro eu trato qualquer execeção ?

try{



}catch(MinhaClasseExceção){



}

Desde já agradeço pela ajuda.
Abraço.

5 Respostas

Guilherme_Gomes

voce pode usar no catch a Exception e usar sua classe para trata-la, algo do tipo:

try{
    ...
}catch(Exception e){
    MinhaExcp me = new MinhaExcp(e);
    me.treat();
}

ou algo do tipo.
Mas não consigo imaginar uma situação em que, fazer isso que você quer, seja recomendavel…

sergiotaborda

YuriSilva:
Olá Pessoal.
Gostaria de saber de é possível criar uma classe que seja responsável por tratar qualquer tipo de execeção, assim no momento que entrar no bloco catch é chamado minha classe e lá dentro eu trato qualquer execeção ?

Sim. É claro que pode criar essa classe. A questão é se deve.Deve.
Isso é o padrão ExceptionHandler.

public interface ExceptionHandler<E extends Throwable > {

public RuntimeException handleException(E exception);

}

uso

try{
......
}catch(Exception e){
  throw new MeuHandler().handle(e);
}
YuriSilva

Olá sergio.
Não entendi muito bem como funciona essa interface ExceptionHandler, poderia me dar um exemplo usando um SQLException por exemplo.

Obrigado.

sergiotaborda
YuriSilva:
Olá sergio. Não entendi muito bem como funciona essa interface ExceptionHandler, poderia me dar um exemplo usando um SQLException por exemplo.
public class SQLLoggerExceptionHandler implements ExceptionHandler<SQLException>{

    public RuntimeException handle(SQLException e){
         Logger.logTrace(e.getMessage());

         return null;
   }

}

public class SQLWrapperExceptionHandler implements ExceptionHandler<SQLException>{

    public RuntimeException handle(SQLException e){
      throw new DataAccesException(e);
   }

}
uso
try {

} catch (SQLException e){
     // so loga (não é aconselhado mas é um exemplo de uso)
     SQLLoggerExceptionHandler.handle(e);
     return; 
}
try {

} catch (SQLException e){
     // encapsula o wrapping
     return SQLWrapperExceptionHandler.handle(e);

}
aleck

http://today.java.net/pub/a/today/2006/04/06/exception-handling-antipatterns.html

Criado 29 de novembro de 2007
Ultima resposta 29 de nov. de 2007
Respostas 5
Participantes 4