CA2219 : Ne pas lever d'exceptions dans les clauses d'exceptionCA2219: Do not raise exceptions in exception clauses

TypeNameTypeName DoNotRaiseExceptionsInExceptionClausesDoNotRaiseExceptionsInExceptionClauses
CheckIdCheckId CA2219CA2219
CategoryCategory Microsoft.UsageMicrosoft.Usage
Modification avec ruptureBreaking Change Sans rupture, ruptureNon Breaking, Breaking

CauseCause

Une exception est levée à partir d’un finally, filtre ou une clause fault.An exception is thrown from a finally, filter, or fault clause.

Description de la règleRule description

Lorsqu’une exception est déclenchée dans une clause d’exception, elle augmente considérablement la difficulté du débogage.When an exception is raised in an exception clause, it greatly increases the difficulty of debugging.

Lorsqu’une exception est levée dans un finally ou une clause fault, la nouvelle exception masque l’exception active, le cas échéant.When an exception is raised in a finally or fault clause, the new exception hides the active exception, if present. Cela rend l’erreur d’origine difficile à détecter et à déboguer.This makes the original error hard to detect and debug.

Lorsqu’une exception est déclenchée dans une clause de filtre, le runtime en mode silencieux intercepte l’exception et provoque le filtre doit évaluer sur false.When an exception is raised in a filter clause, the runtime silently catches the exception, and causes the filter to evaluate to false. Il n’existe aucun moyen de faire la différence entre l’évaluation de filtre false et une exception soit levée à partir d’un filtre.There is no way to tell the difference between the filter evaluating to false and an exception being throw from a filter. Cela rend difficiles à détecter et à déboguer les erreurs dans la logique du filtre.This makes it hard to detect and debug errors in the filter's logic.

Comment corriger les violationsHow to fix violations

Pour résoudre cette violation de cette règle, ne levez pas explicitement d’exception à partir d’un finally, filtre ou une clause fault.To fix this violation of this rule, do not explicitly raise an exception from a finally, filter, or fault clause.

Quand supprimer les avertissementsWhen to suppress warnings

Ne supprimez pas d’avertissement pour cette règle.Do not suppress a warning for this rule. Il n’existe aucun scénario dans lequel une exception levée dans une clause d’exception confère un avantage pour l’exécution de code.There are no scenarios under which an exception raised in an exception clause provides a benefit to the executing code.

CA1065 : Ne levez pas d’exceptions dans des emplacements inattendusCA1065: Do not raise exceptions in unexpected locations

Voir aussiSee also

Avertissements liés à la conceptionDesign Warnings