Desenvolvimento - Visual Basic .NET

Utilizando o Application.Error Event e System Event Log

Neste artigo irei mostrar como capturar os erros que não podem ser gerenciados. Para isso utilizaremos o Evento Application.Error. Este evento é administrado pelo Application_Error do arquivo Global.Asax.

por Cristian Arrano Townsend



Neste artigo irei mostrar como capturar os erros que não podem ser gerenciados. Para isso utilizaremos o Evento Application.Error. Este evento é administrado pelo Application_Error do arquivo Global.Asax.

O gerenciamento de erros a nível de aplicação pode ser bastante útil para ver os erros de todas as páginas de maneira similiar. Além de evitar escrever código para cada página, sem contar na facilidade de gerenciar os erros ocorridos na aplicação.

Para o nosso exemplo, utilizarei o System Event Log para armazenar os erros. O .Net prove o acesso ao System Log através da classe EventLog. Vale lembrar que o Windows 2000 e versões posteriores já vem com 3 logs incorporados: Application, System e Security.

Vamos pro nosso exemplo.

Abra o arquivo Global.asax de sua aplicação. Importe o namespace System.Diagnostics. Localize o Application_Error e escreva o seguinte código:

Dim uhErrorException As Exception = Context.Error.GetBaseException
Dim
msgErro As String = uhErrorException.Message & " - " & uhErrorException.StackTrace
If Not EventLog.SourceExists("MinhaApp") Then
EventLog.CreateEventSource("MinhaApp", "MinhaApp Log")

End
If
EventLog.WriteEntry("MinhaApp Log", msgErro, EventLogEntryType.Error)

Na primeira linha nós capturamos as informações do erro. Depois eu monto uma string com o erro concatenado com a informação do stacktrace.

Depois eu insiro no Log “Minha App Log” as informações do erro.
Note que no terceiro parâmetro do WriteEntry, é determinado o tipo de entrada no System Log. Isso significa que no System Log é mostrado um icone de erro, como é mostrado na figua abaixo.

Na seguinte figura é mostrado os tipos de logs que podem ser inseridos e como ficará o detalhe do erro.

Bom, agora que temos o código, precisamos testar, e para isso, temos que forçar um erro. Crie um WebForm e escreva o seguinte código:

Dim intNumero As Decimal = 10
Dim
intZero As Decimal = 0
Dim
intResultado As Decimal = intNumero / intZero
Me
.lblResultado.Text = "O resultado é: " & intResultado

Bom pessoal, é isso. Espero que este pequeno artigo seja de grande ajuda.

Cristian Arrano Townsend

Cristian Arrano Townsend - Trabalha há 12 anos com desenvolvimento de software. Atualmente trabalha como consultor da FCAMARA em Curitiba, trabalhando com .NET, Metodologias Ágeis e Sharepoint. Possui algumas certificações Microsoft .NET e é Certified Scrum Master