CA2219 : Ne pas lever d'exceptions dans les clauses d'exception

Propriété Value
Identificateur de la règle CA2219
Titre Ne pas lever d'exceptions dans les clauses d'exception
Catégorie Utilisation
Le correctif est cassant ou non cassant Non-cassant, Cassant
Activé par défaut dans .NET 8 À titre de suggestion

Cause

Une exception est levée à partir d’une clause filter, fault ou finally.

Description de la règle

Lorsqu’une exception est levée dans une clause d’exception, cela augmente considérablement la difficulté du débogage.

Lorsqu’une exception est levée dans une clause finally ou fault, la nouvelle exception masque l’exception active, si elle est présente. Cela rend l’erreur d’origine dure à détecter et à déboguer.

Lorsqu’une exception est levée dans une clause filter, le runtime intercepte l’exception en mode silencieux et entraîne l’évaluation du filtre à la valeur false. Il n’existe aucun moyen de faire la différence entre le filtre évalué à la valeur false et la levée d’une exception à partir d’un filtre. Cela rend difficile la détection et le débogage des erreurs dans la logique du filtre.

Comment corriger les violations

Pour résoudre une violation de cette règle, ne levez pas explicitement d’exception à partir d’une clause finally, filter ou 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 offre un avantage au code en cours d’exécution.

CA1065 : Ne pas lever d'exceptions dans les emplacements inattendus

Voir aussi