Sdílet prostřednictvím


CA2201: Nevyvolávejte vyhrazené typy výjimek

Vlastnost Hodnota
ID pravidla CA2201
Název Nevyvolávejte vyhrazené typy výjimek
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Narušující
Povoleno ve výchozím nastavení v .NET 8 No

Příčina

Metoda vyvolá typ výjimky, který je příliš obecný nebo který je vyhrazený modulem runtime.

Popis pravidla

Následující typy výjimek jsou příliš obecné, aby uživateli poskytly dostatečné informace:

Následující typy výjimek jsou rezervované a měly by být vyvolán pouze modulem CLR (Common Language Runtime):

Nevyvolávejte obecné výjimky

Pokud vyvoláte obecný typ výjimky, například Exception nebo SystemException, v knihovně nebo rozhraní, vynutí uživatele zachytit všechny výjimky, včetně neznámých výjimek, které neví, jak zpracovat.

Místo toho buď vyvoláte odvozenější typ, který již existuje v rozhraní, nebo vytvořte vlastní typ odvozený z Exception.

Vyvolání konkrétních výjimek

Následující tabulka ukazuje, která výjimka vyvolání pro různé typy neplatných argumentů, včetně parametru value v set přistupovacím objektu vlastnosti.

Neplatný argument Výjimka
null Odkaz ArgumentNullException
Mimo povolený rozsah hodnot (například index pro kolekci nebo seznam) ArgumentOutOfRangeException
Neplatná enum hodnota InvalidEnumArgumentException
Obsahuje formát, který nesplňuje specifikace parametrů metody (například formátovací řetězec pro ToString(String)). FormatException
Jinak je neplatný ArgumentException

Následující tabulka ukazuje, která výjimka vyvolání pro různé typy neplatných operací.

Neplatná operace Výjimka
Operace je neplatná pro aktuální stav objektu. InvalidOperationException
Operace se provádí u objektu, který byl odstraněn. ObjectDisposedException
Operace se nepodporuje (například v přepsání Stream.Write datového proudu otevřeného pro čtení). NotSupportedException
Výsledkem převodu by byl přetečení (například přetížení operátoru explicitního přetypování). OverflowException

Pro všechny ostatní situace zvažte vytvoření vlastního typu, který je odvozen od Exception a vyvolání.

Jak opravit porušení

Chcete-li opravit porušení tohoto pravidla, změňte typ vyvolané výjimky na konkrétní typ, který není jedním z rezervovaných typů.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.