Globale Ausnahmebehandlung für die Kontrolle von Winforms

original title: "Global Exception Handling for winforms control"


When working on ASP.NET 1.1 projects I always used the Global.asax to catch all errors. I'm looking for a similar way to catch all exceptions in a Windows Forms user control, which ends up being a hosted IE control. What is the proper way to go about doing something like this?

Bei der Arbeit an ASP.NET 1.1-Projekten habe ich immer Global.asax verwendet, um alle Fehler abzufangen. Ich suche nach einer ähnlichen Methode, um alle Ausnahmen in einem Windows Forms-Benutzersteuerelement abzufangen.

Dies ist die Zusammenfassung nach der Übersetzung. Wenn Sie die vollständige Übersetzung anzeigen möchten, klicken Sie auf das Symbol "Übersetzen"

Alle Antworten
  • Translate

    You need to handle the System.Windows.Forms.Application.ThreadException event for Windows Forms. This article really helped me:

  • Translate

    Currently in my winforms app I have handlers for Application.ThreadException, as above, but also AppDomain.CurrentDomain.UnhandledException

    Most exceptions arrive via the ThreadException handler, but the AppDomain one has also caught a few in my experience

  • Translate

    If you're using VB.NET, you can tap into the very convenient ApplicationEvents.vb. This file comes for free with a VB.NET WinForms project and contains a method for handling unhandled exceptions.

    To get to this nifty file, it's "Project Properties >> Application >> Application Events"

    If you're not using VB.NET, then yeah, it's handling Application.ThreadException.

  • Translate

    To Handle Exceptions Globally...

    Windows Application

    System.Windows.Forms.Application.ThreadException event

    Generally Used in Main Method. Refer MSDN Thread Exception


    System.Web.HttpApplication.Error event

    Normally Used in Global.asax file. Refer MSDN Global.asax Global Handlers

    Console Application

    System.AppDomain.UnhandledException event

    Generally used in Main Method. Refer MSDN UnhandledException

  • Translate

    Code from MSDN:

    Sub Main()
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain
      AddHandler currentDomain.UnhandledException, AddressOf MyHandler
         Throw New Exception("1")
      Catch e As Exception
         Console.WriteLine("Catch clause caught : " + e.Message)
      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