Question

Lorsque vous travaillez sur ASP.NET 1.1 les projets j'ai toujours utilisé le Mondial.asax de rattraper toutes les erreurs.Je suis à la recherche d'une manière similaire à attraper toutes les exceptions dans un contrôle utilisateur Windows Forms, qui finit par être hébergé IE contrôle.Quelle est la bonne façon de faire quelque chose comme cela?

Était-ce utile?

La solution

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

Autres conseils

Actuellement dans mon application winforms j'ai des gestionnaires pour Application.ThreadException, comme indiqué ci-dessus, mais également AppDomain.CurrentDomain.UnhandledException

La plupart des exceptions arrivent via l' ThreadException gestionnaire, mais le domaine d'application on a aussi pris un peu de mon expérience

Si vous êtes en utilisant VB.NET, vous pouvez profiter de la très pratique ApplicationEvents.vb.Ce fichier est fourni gratuitement avec un VB.NET WinForms projet et contient une méthode pour le traitement les exceptions non gérées.

Pour arriver à cette chouette fichier "Propriétés du Projet >> Application >> Événements d'Application"

Si vous ne l'utilisez pas VB.NET puis ouais, c'est de la manipulation Application.ThreadException.

Pour Gérer Les Exceptions À L'Échelle Mondiale...

Application Windows

Système.De Windows.Les formulaires.Application.ThreadException événement

Généralement Utilisé dans la Méthode Principale.Reportez-vous MSDN Fil Exception

Asp.Net

Système.Web.HttpApplication.Événement d'erreur

Normalement Utilisé dans le Mondial.asax fichier.Reportez-vous MSDN Mondiale.asax Mondial des Gestionnaires d'

L'Application De La Console

Système.Domaine d'application.UnhandledException événement

Généralement utilisé dans la Méthode Principale.Reportez-vous MSDN UnhandledException

Code à partir 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 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top