Clique aqui para ler todos os artigos desta edição
Criando classes para tratamento e log de erros da aplicação
Igor Raphael Alcantara
Este artigo discute |
Este artigo usa as seguintes tecnologias |
· Criando uma classe para tratamento de erros; · Exibindo informações sobre erros de forma amigável ao usuário; · Enviando log de erros por e-mail. |
Visual Studio 2005, C#. |
Quando desenvolvemos uma aplicação, um fator que devemos levar em consideração é a qualidade aliada à comunicação e suporte ao cliente. Por mais que um software seja testado e passe pelos diversos controles de qualidade, sempre é possível que no momento em que o sistema esteja em uso pelo cliente algum erro aconteça. Quando isso ocorre, em especial em caso de erros de sistema (as famosas exceptions), o usuário tem uma grande dificuldade em transmitir as reais condições em que o erro aconteceu, isso sem falar nas indecifráveis mensagens do sistema emitidas pelos objetos de exceção. Deste modo, transmitir com o máximo de exatidão possível o erro entre cliente e desenvolvedor, melhora não só a qualidade do sistema, mas também economiza horas de suporte e evita a necessidade de visitas dispendiosas.
Criando uma classe para tratamento de erros
Existem diversas formas de implementar esse tipo de recurso e todas elas começam pela construção de uma classe que trate os erros de forma apropriada. A Listagem 1 mostra uma proposta simples para uma classe para esse tipo de tratamento. Vários outros recursos poderão depois ser incorporados a essa classe como, por exemplo, armazenar os erros em alguma fonte de dados.
A classe criada possui dois construtores que tratam os dois tipos de erros abordados: de sistema (exceptions) e operacionais. Em ambos os casos, após serem obtidas as informações necessárias, um objeto é adicionado em uma coleção estática declarada em uma classe chamada Principal (Listagem 3). No caso de um erro de sistema, um formulário com informações é chamado e exibido imediatamente ao usuário. Talvez chamar um Windows Form de dentro de uma classe planejada para ser “genérica” não seja a melhor prática, mas é a forma mais simples e imediata de mostrar as informações que precisamos para o usuário.
Listagem 1. Classe para tratamento de erros
using System;
using System.Collections.Generic;
using System.Text;
namespace MSDN_TratamentoErros
{
public enum gEnmTipoErro
{
enmException,
enmOperacional
};
[Serializable()]
public class Erro
{
private gEnmTipoErro pEnmTipoErro;
private System.DateTime pDatDataHora;
private string pStrOrigem;
private string pStrMensagem;
private string pStrMensagemCompleta;
private System.Exception oErroWindows;
public Erro(System.Exception vException, string vTela)
{
frmErros oJanela = new frmErros();
pEnmTipoErro = gEnmTipoErro.enmException;
oErroWindows = vException;
pDatDataHora = System.DateTime.Now;
...