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.
Règles associées
CA1065 : Ne pas lever d'exceptions dans les emplacements inattendus