CA2219: Keine Ausnahmen in Ausnahmeklauseln auslösen
TypeName |
DoNotRaiseExceptionsInExceptionClauses |
CheckId |
CA2219 |
Kategorie |
Microsoft.Usage |
Unterbrechende Änderung |
Nicht unterbrechend, unterbrechend |
Ursache
Von finally, einem Filter oder einer fault-Klausel wird eine Ausnahme ausgelöst.
Regelbeschreibung
Wenn eine Ausnahme in einer Ausnahmeklausel ausgelöst wird, wird das Debuggen deutlich erschwert.
Wenn eine Ausnahme in einer finally- oder fault-Klausel ausgelöst wird, wird die aktive Ausnahme, falls vorhanden, von der neuen Ausnahme verdeckt. Dadurch ist der ursprüngliche Fehler nur schwer zu erkennen und zu debuggen.
Wenn in einer Filterklausel eine Ausnahme ausgelöst wird, wird die Ausnahme durch die Laufzeit automatisch abgefangen, wodurch der Filter mit false ausgewertet wird. Es kann nicht unterschieden werden, ob der Filter mit false ausgewertet wird oder ob eine Ausnahme von einem Filter ausgelöst wurde. Dadurch wird das Erkennen und Debuggen von Fehlern in der Filterlogik erschwert.
Behandeln von Verstößen
Um diesen Verstoß gegen diese Regel zu beheben, lösen Sie keine explizite Ausnahme von finally, einem Filter oder einer fault-Klausel aus.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel. Es gibt keine Szenarien, in denen eine durch eine Ausnahmeklausel ausgelöste Ausnahme einen Vorteil gegenüber dem ausführenden Code darstellt.
Verwandte Regeln
CA1065: Keine Ausnahmen an unerwarteten Speicherorten auslösen