56 votes

Utilisation d'Exception.Data

Comment avez-vous utilisé la propriété Exception.Data dans les projets C # sur lesquels vous avez travaillé? J'aimerais des réponses qui suggèrent un modèle, plutôt que celles qui sont très spécifiques à votre application.

Merci!

30voto

Austin Salonen Points 28057

L'enregistreur d'exceptions que j'utilise a été modifié pour écrire tous les éléments de la collection de données. Ensuite, pour chaque exception que nous rencontrons que nous ne pouvons pas diagnostiquer à partir de la pile d'exceptions, nous ajoutons toutes les données dans la portée de cette fonction, envoyons une nouvelle version et attendons qu'elle se reproduise.

Je suppose que nous sommes optimistes dans la mesure où nous ne les mettons pas dans toutes les fonctions, mais nous sommes pessimistes dans la mesure où nous ne les supprimons pas une fois le problème résolu.

18voto

Peter Meyer Points 11163

Je l'ai utilisé quand j'ai su que l'exception, j'ai été la création allais avoir besoin d'être sérialisé. L'aide d'un Réflecteur, un jour, j'ai trouvé que l'Excepion.Les données se coince dans et tiré de la sérialisation des ruisseaux.

Donc, en gros, si j'ai les propriétés d'une classe d'exception personnalisée qui sont déjà serializable types, je les mettre en œuvre sur la classe dérivée et d'utiliser les données sous-jacentes de l'objet de leur mécanisme de stockage plutôt que de créer des champs privés pour contenir les données. Si les propriétés de ma coutume objet d'exception exigent plus avancés de la sérialisation, en général, je les mettre en œuvre à l'aide de la sauvegarde de champs privés et gérer leur sérialisation dans la classe dérivée.

Ligne de fond, l'Exception.De données vous donne la sérialisation gratuitement juste en collant vos propriétés en elle -- mais rappelez-vous ces éléments doivent être sérialisables!

14voto

Ian Mercer Points 19271

Je l'ai utilisé pour capturer des informations sur l'état au moment de l'Exception de l'affichage de la portée que l'Exception se déplace jusqu'à la pile. Des éléments tels que le nom de fichier qui a provoqué l'Exception, ou la valeur d'un ID qui permettra de suivre le problème.

Au plus haut niveau, dans une application web j'ai aussi tendance à ajouter beaucoup de Demande d'informations, comme la RawUrl, les cookies, le Référent, ...

Pour plus de détails voici mon blog sur le sujet:

Plutôt que d'attendre que les problèmes de se produire, je ajouter ce code dans tous les cas où une Exception peut se produire c'est lié à quelque chose d'externe, par exemple un nom de fichier ou une URL qui a été en cours d'accès, ... En d'autres mots, toutes les données qui permettront de reproduire le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X