Gestion globale des exceptions pour le contrôle des formulaires

Translate

Lorsque je travaillais sur des projets ASP.NET 1.1, j'ai toujours utilisé le Global.asax pour détecter toutes les erreurs. Je recherche un moyen similaire pour attraper toutes les exceptions dans un contrôle utilisateur Windows Forms, qui finit par être un contrôle IE hébergé. Quelle est la bonne façon de faire quelque chose comme ça?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Vous devez gérer leSystem.Windows.Forms.Application.ThreadExceptionévénement pour Windows Forms. Cet article m'a vraiment aidé:http://bytes.com/forum/thread236199.html.

La source
Translate

Actuellement dans mon application winforms, j'ai des gestionnaires pourApplication.ThreadException, comme ci-dessus, mais aussiAppDomain.CurrentDomain.UnhandledException

La plupart des exceptions arrivent via leThreadExceptiongestionnaire, mais celui d'AppDomain en a également attrapé quelques-uns dans mon expérience

La source
Translate

Si vous utilisez VB.NET, vous pouvez accéder au très pratique ApplicationEvents.vb. Ce fichier est fourni gratuitement avec un projet VB.NET WinForms et contient une méthode de gestionexceptions non gérées.

Pour accéder à ce fichier astucieux, c'est "Propriétés du projet >> Application >> Événements d'application"

Si vous n'utilisez pas VB.NET, alors oui, c'est la gestionApplication.ThreadException.

La source
Translate

Pour gérer les exceptions à l'échelle mondiale ...

Application Windows

Événement System.Windows.Forms.Application.ThreadException

Généralement utilisé dans la méthode principale. RéférerException de thread MSDN

Asp.Net

Événement System.Web.HttpApplication.Error

Normalement utilisé dans le fichier Global.asax. RéférerGestionnaires mondiaux MSDN Global.asax

Application de la console

Événement System.AppDomain.UnhandledException

Généralement utilisé dans la méthode principale. RéférerMSDN UnhandledException

La source
Translate

Code de 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 
La source