Freigeben über


CA2219: Keine Ausnahmen in Ausnahmeklauseln auslösen.

Eigenschaft Wert
Regel-ID CA2219
Titel Keine Ausnahmen in Ausnahmeklauseln auslösen.
Kategorie Verwendung
Fix führt oder führt nicht zur Unterbrechung Führt nicht zur Unterbrechung, führt zur Unterbrechung
Standardmäßig in .NET 9 aktiviert Als Vorschlag

Ursache

Eine Ausnahme wird von einer finally, einem Filter oder einer Fault-Klausel ausgelöst.

Regelbeschreibung

Wenn eine Ausnahme in einer Ausnahme-Klausel ausgelöst wird, erhöht dies die Schwierigkeit des Debuggens erheblich.

Wenn eine Ausnahme in einer finally-Klausel oder Fault-Klausel ausgelöst wird, wird die aktive Ausnahme, soweit vorhanden, von der neuen Ausnahme verdeckt. Dadurch ist der ursprüngliche Fehler nur schwer zu erkennen und zu debuggen.

Wenn eine Ausnahme in einer Filter Klausel ausgelöst wird, fängt die Runtime die Ausnahme automatisch ab und bewirkt, dass der Filter zu "false" ausgewertet wird. Es gibt keine Möglichkeit, den Unterschied zwischen dem Auswerten des Filters zu „false“ und einer Ausnahme, die von einem Filter ausgelöst wird, zu erkennen. Dadurch wird es schwierig, Fehler in der Logik des Filters zu erkennen und zu debuggen.

Behandeln von Verstößen

Um diesen Verstoß gegen diese Regel zu beheben, lösen Sie nicht explizit eine Ausnahme von einer finally-, Filter- oder Fault-Klausel aus.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel. Es gibt keine Szenarios, in denen eine Ausnahme, die in einer Ausnahme-Klausel ausgelöst wird, einen Vorteil für den ausführenden Code bietet.

CA1065: Keine Ausnahmen an unerwarteten Speicherorten auslösen.

Siehe auch