Salut
Existe-t-il un moyen de gérer toutes les exceptions et les pannes d'erreurs dans l'application WPF? Je connais DispatcherUnhandledException, mais il ne gère que les exceptions dans le thread de l'interface utilisateur, n'est-ce pas? Existe-t-il un moyen d'attraper et de consigner toutes les exceptions dans d'autres threads? et des erreurs de liaison aussi? Comment implémentez-vous ce type d'exigence dans votre système enterprice?Quelle est la meilleure pratique pour gérer toutes les exceptions dans l'application WPF?
Répondre
Gardez à l'esprit que Microsoft ne recommande pas attraper toutes les exceptions, au lieu qu'ils recommandent de prendre seulement des exceptions que vous connaissez (ou attendre à se produire dans un endroit). Encore plus si vous voulez obtenir le logo "Certifié pour Microsoft [Windows | Vista]", vous ne devez pas attraper des exceptions inconnues, et ces exceptions doivent être passées au Wer.
AppDomain.CurrentDomain.UnhandledException
Interceptera les exceptions non gérées pour l'unité d'exécution en cours. C'est ainsi que nous le traitons dans notre application. BindingErrors sont toujours traitées et consignées dans la fenêtre de sortie. Avant une version, nous vérifions les erreurs de liaison dans la fenêtre de sortie et nous en réparons autant que possible.
Cependant, je suis d'avis que vous ne voudriez pas traiter les erreurs de liaison comme non traitées car elles sont généralement récupérables et devraient être corrigées le mieux possible avant chaque publication. Vous pouvez modifier Debug> Exeptions dans Visual Studio pour le faire lancer BindingFailure pour obtenir des informations plus spécifiques.
HTH,
Dennis
Où est le meilleur endroit pour définir le gestionnaire d'événements tels que peuvent être détectés même les erreurs plus tôt? –
Vous pouvez enregistrer l'événement dans le point d'entrée de l'application. Voir http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx pour les détails car il y a quelques choses que vous devez comprendre. – Dennis
Oui, il y a 3 places:
- place
Application.Run()
danstry
...catch
DispatcherUnhandledException
AppDomain.CurrentDomain.UnhandledException
Dans les deux cas, vous devez afficher une s'il vous plaît-forgive- me message et suggère d'envoyer un rapport d'erreur.
Le service sur votre serveur doit répondre «merci de nous avoir envoyé un rapport d'erreur» ou «le problème est déjà résolu dans la prochaine version. s'il vous plaît mettre à jour »
Je ne pensais pas que 'Application.Run()' existait dans les applications WPF. – Pat
Bon point pour lister tous les lieux. Mais assurez-vous que tous sont corrects. –
Voici une exploitation forestière belle solution avec NLog:
Logging in .NET with NLog (default config file, catch all exceptions and route to logger, ...)
- 1. Quelle est la meilleure façon de gérer les exceptions ObjectDataSource?
- 2. Quelle est la meilleure pratique pour la gestion des exceptions dans Silverlight?
- 3. Quelle est la meilleure approche pour gérer les exceptions lancées dans un thread séparé?
- 4. Quelle est la meilleure pratique pour modifier les états d'affichage?
- 5. Meilleure pratique pour gérer les données des utilisateurs anonymes
- 6. Quelle est la meilleure pratique pour gérer le temps en R?
- 7. Meilleure pratique pour gérer les classes de site
- 8. Quelle est la meilleure bibliothèque pour gérer une wiimote?
- 9. Quelle est la meilleure pratique pour la réutilisation du modèle de domaine dans les applications composites?
- 10. Meilleure pratique pour gérer un grand service WCF
- 11. Méthodes getClass() et statiques: Quelle est la meilleure pratique?
- 12. Quelle est la meilleure pratique pour compter des valeurs égales dans une base de données?
- 13. Quelle est la meilleure méthode pour gérer FaultExceptions dans les appels WCF Async?
- 14. Quelle est la meilleure pratique pour définir des extensions dans un standard XML?
- 15. Quelle est la meilleure façon de gérer les paramètres (configuration) dans ASP.NET 2.0?
- 16. Quelle est la meilleure pratique pour suivre les événements avec Google Analytics?
- 17. Meilleure pratique pour Java IPC
- 18. Meilleure pratique: Quelle est la meilleure façon de stocker les messages d'exception/d'erreur ou d'information dans C# .net pour l'internationalisation?
- 19. Quelle est la meilleure façon de gérer I18N dans les tables de recherche?
- 20. Quelle est la meilleure pratique pour stocker et traiter des images et des vidéos?
- 21. Quelle est la meilleure façon de gérer les builds stockés dans le contrôle source?
- 22. Exceptions: Est-ce une bonne pratique?
- 23. Quelle est la meilleure pratique pour inclure des fichiers actionscript externes dans l'application flexible
- 24. Code d'erreur ou Exception - quelle est la meilleure pratique pour un service Web ASP.Net?
- 25. Quelle est la meilleure pratique pour créer des modèles de contrôle RE-USABLE dans Silverlight
- 26. Quelle est la meilleure façon de gérer les formats de retour multiples dans ASP.NET MVC
- 27. Quelle est la meilleure pratique/méthode de partage de contenu par programmation entre sites dans Joomla?
- 28. WPF - remplacer les couleurs de style, meilleure pratique
- 29. Quelle est la meilleure stratégie pour gérer les gros téléchargements de fichiers avec Ruby on Rails?
- 30. Quelle est la meilleure pratique pour lutter contre le problème de fermeture de la console?
Je suis d'accord, mais si vous attrapez toutes les exceptions faites-le seulement pour l'enregistrer, ainsi vous pouvez trouver les erreurs communes et les corriger. An puis relancez l'exception. – khebbie
Je crois que le conseil de Microsoft que vous mentionnez n'est PAS de faire toutes les exceptions, c'est-à-dire attraper l'exception, à partir du bloc try. Cependant, le PO demande une solution pour gérer les exceptions non interceptées afin que vous puissiez gérer la situation en informant l'utilisateur du plantage et en envoyant à votre équipe de développement/assurance qualité un rapport de plantage par e-mail. – Dennis
Non, le conseil de Microsoft consiste exactement à intercepter toutes les exceptions non gérées.L'idée principale est de collecter toutes les informations et d'envoyer un rapport à MS, de sorte que MS aura toutes les statistiques sur les applications problématiques, et le développeur pourra alors prendre ces rapports de MS par Winqual. Mais bien sûr, faire un peu de journalisation à propos d'une exception inconnue, puis relancer comme khebbie mentionné est également autorisé. – arbiter