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