Lorsque je travaillais sur des projets ASP.NET 1.1, j'utilisais toujours Global.asax pour détecter toutes les erreurs. Je suis à la recherche d'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?Gestion des exceptions globales pour le contrôle des winforms
Répondre
Vous devez gérer l'événement System.Windows.Forms.Application.ThreadException
pour Windows Forms. Cet article m'a vraiment aidé: http://bytes.com/forum/thread236199.html.
Si vous utilisez VB.NET, vous pouvez accéder au très pratique ApplicationEvents.vb. Ce fichier vient gratuitement avec un projet VB.NET WinForms et contient une méthode pour gérer unhandled exceptions.
Pour accéder à ce fichier astucieux, il est « Propriétés du projet >> L'application >> Evénements d'application »
Si vous ne l'utilisez VB.NET, alors oui, il est la manipulation Application.ThreadException.
Actuellement dans mon application WinForms je gestionnaires pour Application.ThreadException
, comme ci-dessus, mais aussi AppDomain.CurrentDomain.UnhandledException
La plupart des exceptions arrivent via le gestionnaire ThreadException
, mais celui AppDomain a également pris un peu mon expérience
Exemple de code de MSDN montrant comment intercepter les deux types d'exceptions non gérées: [msdn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) –
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
Pour gérer les exceptions ... à l'échelle mondiale
Application Windows
événement de System.Windows.Forms.Application.ThreadException
Généralement utilisé dans la méthode principale. Reportez-vous MSDN Thread Exception
Asp.Net
événement System.Web.HttpApplication.Error
Normalement utilisé dans le fichier Global.asax. Reportez-vous MSDN Global.asax Global Handlers
Application console
événement System.AppDomain.UnhandledException
Généralement utilisé dans la méthode principale. Reportez-vous à MSDN UnhandledException
- 1. Gestion des exceptions globales Flex 3
- 2. Ajout de la gestion des exceptions globales à ASP.NET
- 3. Bibliothèques de gestion des exceptions conviviales pour WinForms (.NET)
- 4. Gestion des exceptions d'événements de contrôle ASP.NET
- 5. gestion des erreurs javascript globales
- 6. DB2 Gestion des exceptions
- 7. Python Gestion des exceptions
- 8. Gestion des exceptions GetGlobalResourceObject
- 9. Gestion des exceptions/gestion des ressources dans Jersey JAX-RS
- 10. Problème de gestion des exceptions
- 11. Silerlight MVVM Gestion des exceptions
- 12. Gestion des exceptions et messages conviviaux
- 13. Gestion des exceptions ASP.NET MVC
- 14. Pratiques de gestion des exceptions
- 15. Robuste gestion des exceptions Javascript
- 16. lambdas et gestion des exceptions
- 17. .NET PInvoke Gestion des exceptions
- 18. Gestion des erreurs dans le contrôle ReportViewer
- 19. Empêcher le contrôle WebBrowser d'avaler des exceptions
- 20. Java Gestion des exceptions dans les "événements"
- 21. Gestion des exceptions de thread dans WCF
- 22. Gestion du problème des exceptions non gérées
- 23. Gestion des exceptions ASP.Net Ajax côté serveur
- 24. C# Gestion des exceptions dans les classes
- 25. Gestion des exceptions à partir de WS
- 26. Gestion des exceptions avec WPF et MVVM
- 27. Modèles de gestion des exceptions de GCC
- 28. Gestion des exceptions au démarrage du service
- 29. Gestion des exceptions dans les appels Ajax
- 30. Java gestion des exceptions - exception personnalisée
Jetez un coup d'œil à [ma question] (http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11) pour connaître quelques pièges (liens vers un couple) des entrées de blog d'horreur de codage). – Ray