35 Stimmen

Globale Ausnahmebehandlung für Winforms-Steuerung

Bei der Arbeit an ASP.NET 1.1-Projekten habe ich immer die Global.asax verwendet, um alle Fehler abzufangen. Ich bin auf der Suche nach einem ähnlichen Weg, um alle Ausnahmen in einem Windows Forms-Benutzer-Steuerelement zu fangen, die am Ende ein gehostetes IE-Steuerelement ist. Was ist der richtige Weg, um über so etwas zu tun?

0 Stimmen

Sehen Sie sich auch an meine Frage für einige der Fallstricke (Links zu einer Reihe von Blog-Einträgen über Codierungshorror).

25voto

Chris Leon Punkte 401

Sie müssen die System.Windows.Forms.Application.ThreadException Ereignis für Windows Forms. Dieser Artikel hat mir wirklich geholfen: http://bytes.com/forum/thread236199.html .

11voto

Orion Edwards Punkte 117361

Derzeit in meinem winforms app Ich habe Handler für Application.ThreadException wie oben, aber auch AppDomain.CurrentDomain.UnhandledException

Die meisten Ausnahmen werden über die ThreadException Handler, aber die AppDomain hat meiner Erfahrung nach auch ein paar erwischt

3 Stimmen

Beispielcode aus MSDN, der zeigt, wie beide Arten von unbehandelten Ausnahmen abgefangen werden können: msdn

6voto

Brad Tutterow Punkte 7437

Wenn Sie VB.NET verwenden, können Sie auf die sehr praktische ApplicationEvents.vb zurückgreifen. Diese Datei wird kostenlos mit einem VB.NET WinForms-Projekt geliefert und enthält eine Methode zur Behandlung von unbehandelte Ausnahmen .

Sie finden diese nützliche Datei unter "Projekteigenschaften >> Anwendung >> Anwendungsereignisse".

Wenn Sie nicht VB.NET verwenden, dann ja, es ist die Handhabung Anwendung.ThreadException .

3voto

Ajay Punkte 1944

Um Ausnahmen global zu behandeln...

Windows-Anwendung

System.Windows.Forms.Application.ThreadException Ereignis

Im Allgemeinen in der Hauptmethode verwendet. Siehe MSDN Thread-Ausnahme

Asp.Net

System.Web.HttpApplication.Error Ereignis

Normalerweise in der Datei Global.asax verwendet. Siehe MSDN Global.asax Globale Handler

Konsolenanwendung

System.AppDomain.UnhandledException Ereignis

Wird im Allgemeinen in der Hauptmethode verwendet. Siehe MSDN UnhandledException

2voto

Aaron Hoffman Punkte 6146

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X