Tratamento de Exceções

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 :wink:

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…