Globale Ausnahmebehandlung für winforms control
-
08-06-2019 - |
Frage
Bei der Arbeit auf ASP.NET 1.1 Projekte, die ich immer verwendet, die Global.asax zu catch-all-Fehler.Ich bin auf der Suche nach einer ähnlichen Art und Weise zu fangen Sie alle Ausnahmen in Windows Forms-Benutzer control, die endet als eine gehostete IE control.Was ist der richtige Weg zu gehen über das tun so etwas?
Lösung
Sie müssen Griff die System.Windows.Forms.Application.ThreadException
Ereignis für Windows Forms.Dieser Artikel hat mir wirklich geholfen: http://bytes.com/forum/thread236199.html.
Andere Tipps
Derzeit in meiner winforms-app, die ich habe-Handler für Application.ThreadException
, wie oben, aber auch AppDomain.CurrentDomain.UnhandledException
Die meisten Ausnahmen kommen über die ThreadException
handler, aber die AppDomain-man hat es auch erwischt, ein paar in meiner Erfahrung
Wenn Sie VB.NET Sie können auf die sehr bequem ApplicationEvents.vb.Diese Datei ist im Lieferumfang eine VB.NET WinForms-Projekt und enthält eine Methode für die Handhabung unbehandelte Ausnahmen.
Um diese nette Datei "Project Properties >> Anwendung >> Anwendungs-Events"
Wenn Sie nicht mit dem VB.NET, dann ja, es ist Handhabung Anwendung.ThreadException.
Behandeln Von Ausnahmen Weltweit...
Windows-Anwendung
System.Windows.Formen.Anwendung.ThreadException-Ereignis
In der Regel Verwendet in der Main-Methode.Finden MSDN-Thread-Ausnahme
Asp.Net
System.Web.HttpApplication.Fehler-Ereignis
Normalerweise Verwendet in Global.asax-Datei.Finden MSDN Global.Global asax Handler
Console Application
System.AppDomain.UnhandledException-Ereignis
In der Regel verwendet in der Main-Methode.Finden MSDN UnhandledException
Code von 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