Tratamento de erros - Alertas e Logs

2 respostas
K

ola pessoal
eu preciso de uma ajuda no tratamento de erros dos meus sistemas(são sistemas web)
eu ja centralizei tudo em uma unica classe, quando ocorre erros, elas lancam a seguinte classe

package br.com.krusst.util;  
   
 public class KrusstException extends Exception{  
   
     private static final long serialVersionUID = 392076463689226297L;  
       
     private String message;  
     private String field;  
   
       
     public KrusstException(){  
         super();  
     }  
       
     public KrusstException(String field, String message){  
         this.message = message;  
         this.field = field;  
     }  
   
       
     public KrusstException(String mensagem, Exception e) {
    	 super(mensagem,e);
	}

	public String getMessage() {  
         return message;  
     }  
   
     public String getField() {  
         return field;  
     }  
   
 }

na verdade essa classe nao faz “nada”, porem, como sabia que tinha que centralizar em algum lugar, ja deixei o sistema assim.

agora os problemas que estou tendo
1-quando ocorrem erro dentro de try catch como nesse exemplo

public void getPorId(int pessoaID) throws KrusstException{
		Connection 	conn  	= null;
		ResultSet 	rs 		= null;
		String 		sql 	= REVISAR;
		try {
			conn = GerenciadorConexao.getConexao();
			CallableStatement clblStmt = conn.prepareCall(sql);   
.....			

			rs = clblStmt.executeQuery();
			if(rs.next()){
....
			}
			
		} catch (Exception e) {
				throw new KrusstException("erro",e);
		}
	}

e no meu servlet

try {
			pessoaFisica = pessoaFisicaDAO.getPorId(pessoaID);
			
		} catch (Exception e) {
			e.printStackTrace();
		}

quando ocorre um erro dentro desses metodos por exemplo, eu so sei pelo console do TomCat, pois na aplicacao acaba na me mostrando o erro.
e como servlet lançam IOException eu nao sei oq fazer, como tratar esses erro pra lancar pra aplicacao me avisar quanto ocorrer os erros.

2-agora o outro problema sao os logs
sei que colocar as chamadas dos metodos de Log dentro da classe de tratamento de erros é “errado”, porem, eu nao tenho nem nocao de como fazer os logs de erros.
a principio eu queria 3 tipos de logs, gravar no TXT, banco de dados(ate sei como fazer mais ou menos) e email
se alguem puder me dar uma orientada nesse sentido serei grato.
uma coisa que queria nesse caso de logs é pegar o valor de todas as variaveis da aplicacao, é possivel fazer isso?

por enqto é isso
abs
t+

2 Respostas

P

Sobre a sua segunda questão, você pode utilizar a API Logging. Ela é bem simples.

sergiotaborda

Colocar o log no catch é errado em geral mas é certo se aplicado corretamente.
O log só deve ser utilizado no catch quando o método acima está fora do escopo da aplicação. Ou seja, quando - se deixarmos o erro de propagar - ele irá se propagar para JVM ou o OS. No caso dos servlets isso tb se aplica. Se a exceção vai se propagar além do servlet o que deve acontecer é loggar o erro e redirigir o usuário para uma página que informe que acotneceu um erro.

Agora, isso só deve ser feito se não for possivel corrigir o erro. Por exemplo, se o cara colocou dados inválidos basta dizer para o cara corrigir os dados. Logar a exceção só é permitido para exceções sem solução. E mesmo assim tem que haver um aviso ao usuário.

Para fazer o log use um framework de logging.

(Nota: o que não pode ser feito em hipótese alguma é e.printStacktrace())

Criado 13 de agosto de 2008
Ultima resposta 13 de ago. de 2008
Respostas 2
Participantes 3