Ne pas lever d'exceptions dans les clauses de gestion des exceptions
Mise à jour : novembre 2007
TypeName |
DoNotRaiseExceptionsInExceptionClauses |
CheckId |
CA2219 |
Catégorie |
Microsoft.Usage |
Modification avec rupture |
Sans rupture, rupture |
Cause
Une exception est levée à partir d'une clause finally, d'un filtre ou d'une clause fault.
Description de la règle
Lorsqu'une exception est déclenchée dans une clause d'exception, elle augmente fortement la difficulté du débogage.
Lorsqu'une exception est déclenchée dans une clause finally ou dans une clause fault, la nouvelle exception masque l'exception active, si elle est présente. Cela rend l'erreur d'origine difficile à détecter et à déboguer.
Lorsqu'une exception est déclenchée dans une clause de filtre, l'exécution intercepte l'exception silencieusement, ce qui fait que le filtre prend la valeur false. Il n'y a aucune façon de différencier le fait que le filtre prenne la valeur false et qu'une exception soit levée par un filtre. Cela rend difficiles la détection et le débogage des erreurs dans la logique du filtre.
Comment corriger les violations
Pour résoudre la violation de cette règle, ne déclenchez pas explicitement d'exception d'une clause finally, d'un filtre ou d'une clause fault.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle. Il n'existe aucun scénario dans lequel une exception levée dans une clause d'exception confère un avantage au code qui s'exécute.
Règles connexes
Ne pas lever d'exceptions dans des emplacements inattendus