Mondial de la gestion des exceptions pour winforms de contrôle
-
08-06-2019 - |
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?
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