Global de Tratamento de Exceção para winforms controle
-
08-06-2019 - |
Pergunta
Quando se trabalha em ASP.NET 1.1 projetos de eu sempre usei o Global.asax para detectar todos os erros.Eu estou olhando para uma forma semelhante à captura todas as exceções em um Windows Forms controle de usuário, o que acaba sendo uma hospedado IE controle.Qual é a forma correta de fazer algo como isso?
Solução
Você precisa lidar com o System.Windows.Forms.Application.ThreadException
eventos para Formulários do Windows.Este artigo ajudou-me: http://bytes.com/forum/thread236199.html.
Outras dicas
Atualmente no meu winforms, recomendo manipuladores para Application.ThreadException
, como acima, mas também AppDomain.CurrentDomain.UnhandledException
A maioria das exceções chegam através do ThreadException
manipulador, mas o AppDomain tem também peguei algumas na minha experiência
Se você estiver usando VB.NET, você pode aproveitar muito conveniente ApplicationEvents.vb.Este ficheiro é fornecido gratuitamente com um VB.NET WinForms projeto e contém um método para tratamento de exceções sem tratamento.
Para chegar a esta bacana arquivo, ele é "Propriedades do Projeto >> Aplicativo >> Eventos de Aplicativo"
Se você não estiver usando VB.NET e, em seguida, sim, é tratamento de Aplicação.ThreadException.
Para Lidar Com Exceções No Mundo Inteiro...
Aplicação Do Windows
Do sistema.O Windows.Formulários.Aplicação.ThreadException evento
Geralmente Utilizado no Método Main.Consulte MSDN Thread Exceção
Asp.Net
Do sistema.Da Web.HttpApplication.Evento de erro
Normalmente Utilizado no Global.asax arquivo.Consulte MSDN Global.asax Global Manipuladores
Aplicativo De Console
Do sistema.Domínio de aplicação.UnhandledException evento
Geralmente utilizado no Método Main.Consulte MSDN UnhandledException
Código da MSDN: http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
AddHandler currentDomain.UnhandledException, AddressOf MyHandler
Try
Throw New Exception("1")
Catch e As Exception
Console.WriteLine("Catch clause caught : " + e.Message)
Console.WriteLine()
End Try
Throw New Exception("2")
End Sub
Sub MyHandler(sender As Object, args As UnhandledExceptionEventArgs)
Dim e As Exception = DirectCast(args.ExceptionObject, Exception)
Console.WriteLine("MyHandler caught : " + e.Message)
Console.WriteLine("Runtime terminating: {0}", args.IsTerminating)
End Sub