Freigeben über


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 

System.ArgumentNullException

Außerhalb des zulässigen Wertebereichs (z. B. ein Index für eine Auflistung oder eine Liste)

System.ArgumentOutOfRangeException

Ungültiger enum-Wert

System.ComponentModel.InvalidEnumArgumentException

Enthält ein Format, das die Parameterangaben einer Methode nicht erfüllt (z. B. die Formatzeichenfolge für ToString(String)).

System.FormatException

Andernfalls ungültig

System.ArgumentException

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.

Verwandte Regeln

CA1031: Allgemeine Ausnahmetypen nicht auffangen