Partager via


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

Voir aussi

Autres ressources

Avertissements liés au design