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 8 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.
Ähnliche Regeln
CA1065: Keine Ausnahmen an unerwarteten Speicherorten auslösen.