Tratamento de exceções não previstas na aplicação

Num sistema (web particularmente)  enchemo a página de validators, try-catch, alerts, mensagens, máscaras de entrada, etc. tudo visando cercar as possibilidades de erro nas operações dos usuários. Mas ninguém é perfeito!!!!! Alguma coisa sempre passa e quando o usuário fizer aquilo que a gente não previu vai uma pagina padrão (específica de cada plataforma) de erro não tratado. No ambiente ASP.NET, podemos configurar uma página de erro padrão no web.config. Eu, pessoalmente, não me adaptei bem a esta solução.

Eu costumo fazer o seguinte:

  • Crio um página de erro bem amígável, tipo Erro.aspx ou Erro.htm. Inclusive a mensagem que eu coloco é esta: “Infelizmente o sistema comportou-se de maneira inesperada. A equipe de desenvolvimento foi notificada automaticamente. Esperamos solucionar o problema o mais rápido possível. Tente realizar a mesma operação mais tarde pra verificar se o problema foi corrigido. Pedimos desculpas pelos transtornos causados e contamos com a compreensão de todos.” Claro! Voce pode mudar a mensagem e arrumar bem legal na página.
  • Depois, insiro um item no website chamado Global.asax se já não tiver inserido. Este arquivo dispara vários eventos automaticamente durante a execução da aplicação. Pesquise no help do SDK sobre esses eventos mais comuns: Application_Start, Application_End, Session_Start, Session_End, Application_BeginRequest e o que nós vamos usar, Application_Error. Este evento é disparado sempre que um erro não tratado ocorrer. Se no seu Global.asax este método/evento não estiver declarado voce pode incluir como mostrado abaixo e neste evento nós iremos inserir o nosso tratamento do erro não tratado.

protected void Application_Error(Object sender, EventArgs e)
{
}

  • O código que eu insiro fará duas coisas: primeiro, gravar em um arquivo texto, tipo erros.txt, a exceção que ocorreu e de maneira cumulativa; um abaixo do outro no arquivo. Dessa forma é possível resgatar as exceções que ocorreram ao longo do uso do sistema. Os programadores podem acessar esse arquivo e corrigir os erros do sistema e depois apagá-lo, aguardando novos erros. 😉 A segunda coisa é, caso este erro não tenha dado localmente, ou seja, tenha sido um erro gerado pelo usuário final, o sistema irá desviar o browser para a página de erro personalizada que criamos acima. Inclusive essa página pode ter um link para reiniciar o sistema. Se for um erro local, ou seja, na máquina do desenvolvedor, a página amarela com detalhes da exceção pode ser vista normalmente.

Esse arquivo erros.txt pode ser acessado até do url tipo http://www.meusistema.com/erros.txt. Assim o programador pode saber como o sistema anda se comportando de qualquer lugar na rede ou na internet e é dessa forma que ele fica sendo “notificado automaticamente“, como informamos na mensagem que eu coloquei na página de erro personalizado. Claro que depende do programador olhar esse aquivo sempre. Alguns podem querer que o sistema notifique por email. Questão de implementação. Eu prefiro no arquivo mesmo.

Para compreender melhor nossa abordagem, sugerimos verificar como tudo isso funciona e é implementado em algum de nossos projetos. Clique aqui pra saber mais.

Site Meter

Anúncios

Sobre Reginaldo Jr.

Detail-oriented, versatile, and dedicated information technology professional, offering comprehensive experience in software engineering and development. Knowledgeable of web systems, desktop, distributed applications, web services, requirements elicitation, data modeling, database administration, and problem analysis. Recognized for verifiable record of success in handling and accomplishing assigned projects within specifications and time constraints. Equipped with strong dedication to meeting and exceeding organizational goals and objectives while driving organizations toward business growth and development. Armed with solid communication, organizational, problem-solving, and interpersonal skills.
Esse post foi publicado em Todos e marcado , , , , , . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s