Estou querendo criar a minha classe de Tratamento de Exceções e não estou acertando em fazer.
Esta classe extends a classe Exception.
Qualquer outra classe que entrar no catch deverá chamar esta minha classe de Tratamento de Erro passando o código do erro para a classe tratar.
A classe de tratamento irá verificar o código do erro e retornar a mensagem correta para a classe que o chamou e depois devolver para o meu Servlet que chamou a classe de negócios.
Pois é, não sei como fazer para retornar o erro.
no meu catch estou fazendo assim:
catch(SQLException e){
throw new TrataErro(e.getErrorCode());
}
Será que alguém pode me ajudar???
:?: :?:
Cara, veja se ajuda…
[code]public class MySystemException extends Exception {
/**
* Cria uma MySystemExcetion com base numa mensagem customizada e uma excecao ja existente.
* Util em alguns casos quando se deseja saber o stack-trace mas com uma mensagem mais amigavel
*
* @param mensagem
* Mensagem customizada para esta excecao
* @param e
* Excecao base para esta excecao
*/
public MySystemException(String mensagem, Exception e) {
super(mensagem, e);
}
/**
* Cria uma excecao com base numa mensagem customizada.
*
* @param mensagem
* Mensagem customizada
*/
public MySystemException(String mensagem) {
super(mensagem);
}
}[/code]
Quando ocorrer uma excessao…
...
catch(SQLException sqlex) {
throw new MySystemException("Erro envolvendo SQL");
ou utilizar o outro construtor com a msg e o “stack-trace”
...
catch(SQLException sqlex) {
throw new MySystemException("Erro envolvendo SQL", sqlex.getMessae());
Espero ter ajudado.
Abraços
Obrigada pela ajuda, mas não é isso que estou querendo.
Eu quero que minha classe que trata o erro mande a mensagem, e não a classe que a chama.
Por exemplo, se ocorrer um erro na classe de negócios, no catch dela eu chamo a minha classe de tratamento de erro e mando o código do erro pra ela, pra que ela devolva a mensagem adequada.
vansol,
É o seguinte, cria a sua exceção normalmente, só que cria um construtor com um inteiro pra ela guardar seu código de erro:
public class TrataErro extends Exception
{
private int ce;
TrataErro (int codigo_erro)
{
ce = codigo_erro;
}
public int getCodigoErro()
{
return ce;
}
}
Na sua classe, qdo der o erro, aí vc faz o q vc quer:
catch(SQLException e)
{
throw new TrataErro(e.getErrorCode());
}
Aí lá no fim do seu código, na hora q vc tiver na parte de visualização e a exceção do tipo TrataErro chegar, vc faz sua lógica, algo do tipo:
catch(TrataErro ex)
{
switch (ex.getCodigoErro())
{
case 1:
.....
case 10:
......
}
}
Ah, e qdo for propagar a sua exceção, não esquece de setar o stack trace da exceção tb não, senão vc perde ele.
catch(SQLException e)
{
TrataErro t = TrataErro(e.getErrorCode());
t.setStackTrace(e.getStackTrace());
throw t;
}
Acho q é assim mesmo q seta o stack trace, se não for dá uma olhada aí.
Era isso mesmo q vc queria?
[]'s
carisio
[quote=“vansol”]Obrigada pela ajuda, mas não é isso que estou querendo.
Eu quero que minha classe que trata o erro mande a mensagem, e não a classe que a chama.
Por exemplo, se ocorrer um erro na classe de negócios, no catch dela eu chamo a minha classe de tratamento de erro e mando o código do erro pra ela, pra que ela devolva a mensagem adequada.[/quote]
lembre-se de no construtor receber como parametro um int!
poste o código da classe de exceção que vc fez…