CA2201: Keine reservierten Ausnahmetypen auslösen
TypeName |
DoNotRaiseReservedExceptionTypes |
CheckId |
CA2201 |
Kategorie |
Microsoft.Usage |
Unterbrechende Änderung |
Breaking |
Ursache
Eine Methode löst einen Ausnahmetyp aus, der zu allgemein oder von der Laufzeit reserviert ist.
Regelbeschreibung
Die folgenden Ausnahmetypen sind zu allgemein, um dem Benutzer ausreichend Informationen bereitzustellen:
Die folgenden Ausnahmetypen sind reserviert und sollten nur von der Common Language Runtime ausgelöst werden:
Keine allgemeinen Ausnahmen auslösen
Wenn Sie einen allgemeinen Ausnahmetyp wie Exception oder SystemException in einer Bibliothek oder einem Framework auslösen, werden Consumer gezwungen, alle Ausnahmen abzufangen, einschließlich unbekannter Ausnahmen, die sie nicht behandeln können.
Lösen Sie entweder einen stärker abgeleiteten Typ aus, der bereits im Framework vorhanden ist, oder erstellen Sie einen eigenen Typ, der von Exception abgeleitet wird.
Bestimmte Ausnahmen auslösen
In der folgenden Tabelle sind die Parameter und Ausnahmen enthalten, die beim Validieren des Parameters ausgelöst werden, einschließlich des Wertparameters im set-Accessor einer Eigenschaft:
Parameterbeschreibung |
Ausnahme |
---|---|
null-Referenz |
|
Außerhalb des zulässigen Wertebereichs (z. B. ein Index für eine Auflistung oder eine Liste) |
|
Ungültiger enum-Wert |
|
Enthält ein Format, das die Parameterangaben einer Methode nicht erfüllt (z. B. die Formatzeichenfolge für ToString(String)). |
|
Andernfalls ungültig |
Wenn eine Operation ungültig für den aktuellen Objektzustand ist, wird System.InvalidOperationException ausgelöst.
Wenn eine Operation für ein verworfenes Objekt ausgeführt wird, wird System.ObjectDisposedException ausgelöst.
Wenn eine Operation nicht unterstützt wird (wie in einem überschriebenen Stream.Write in einem zum Lesen geöffneten Stream), wird System.NotSupportedException ausgelöst.
Wenn eine Konvertierung zu einem Überlauf führt (wie in einer expliziten Umwandlungsoperatorüberladung), wird System.OverflowException ausgelöst.
In allen anderen Situationen sollten Sie erwägen, Ihren eigenen Typ zu erstellen, der von Exception abgeleitet wird, und diesen auslösen.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, ändern Sie den Typ der Ausnahme, die ausgelöst wird, in einen speziellen Typ, der kein reservierter Typ ist.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.