Salut,
J'ai créé une classe de gestion d'erreur qui hérite ainsi:
En gros, j'ai suivit les recommandations de FXCop pour créer les méthodes de base, puis j'en ai ajouter pour réaliser des traitements particuliers (envoi d'un mail surtout).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [Serializable] public class BusinessException : System.Exception, ISerializable {
Ainsi, dans les "try catch" de mon code, je ne fais plus de throw mais une simple instanciation de ma classe de gestion d'erreur. Celle-ci, en fonction d'une enum passée en paramètre, va stoper l'execution du script ou non par l'intermediaire d'un throw. Ce qui donne:
Malheureusement, j'ai une alerte "DoNotIgnoreMethodResults" sur la creation de l'instance de la classe de gestion d'erreur. Au de-là de la confiance ou de l'importance qu'on peut accorder à FXCop, j'aimerai bien comprendre les risques. Que se passe-t-il si je créé une instance qui ne stope pas le script? Sera-t-elle perdue dans le GC?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 try { (code...) } catch (DivideByZeroException ex) { new BusinessException("this is a test", ex, BusinessExceptionLevel.Low); }
De plus, je voudrais savoir comment vous vous y prenez pour la gestion d'erreurs personnalisées? Le jet d'une erreur dans une application web passe un peu inapparçue. Par contre dans un winform cela provoque un vilain plantage avec envoi de données à Bill.
Enfin, comment faites vous pour faire remonter une erreur sur l'interface utilisateur quand elle se produit dans une couche profonde (DAL) d'une architecture 3-Tiers? Faites-vous une verification systmatique de tous les parametres en entrée? Les parametres d'une application pouvant provenir de plusieurs sources (saisie, config, ...)
A+
Partager