Tratamento de erros inesperados

Por mais que utilizemos try/catch, sempre pode ocorrer algum erro imprevisto na aplicação, é no mínimo desagradável quando a nossa aplicação para inesperadamente e mostra uma estranha tela de erro para o usuário, não permitindo que prossiga.

Para evitar esse tipo de problema podemos realizar uma captura de excessões diretamente no Application Domain. O Application Domain é, por assim dizer, o espaço de execução da nossa aplicação.

 

Desta forma, capturando excessões no application domain, continuamos podendo utilizar try/catch a vontade, mas se alguma excessão não prevista ocorrer ela será também capturada pelo nosso código, através do evento no application domain

Para fazer isso, devemos incluir um módulo e uma sub Main para ser a sub de start do projeto. Na sub main, capturamos o evento para tratamento de excessões e damos seguimento com a aplicação.

 

Module Module1

Public Sub main()

 

AddHandler System.AppDomain.CurrentDomain.UnhandledException, _

AddressOf trataerro

Dim x As New Form1

  Application.Run(x)

End Sub

 

Sub trataerro(ByVal sender As Object, ByVal e As _

  System.UnhandledExceptionEventArgs)

  MsgBox("Ocorreu um erro, chame o suporte!")

  Trace.Write(CType(e.ExceptionObject, Exception).ToString)

End Sub

 

End Module