Megosztás a következőn keresztül:


CA2201: Ne emeljen fenntartott kivételtípusokat

Tulajdonság Érték
Szabályazonosító CA2201
Cím Ne emelje ki a fenntartott kivételtípusokat
Kategória Használat
A javítás kompatibilitástörő vagy nem törik Törés
Alapértelmezés szerint engedélyezve a .NET 9-ben Nem

Ok

Egy metódus olyan kivételtípust hoz létre, amely túl általános vagy a futtatókörnyezet által fenntartott.

Szabály leírása

A következő kivételtípusok túl általánosak ahhoz, hogy elegendő információt adjanak a felhasználónak:

A következő kivételtípusok vannak fenntartva, és csak a közös nyelvi futtatókörnyezetnek kell megjelennie:

Ne dobjon ki általános kivételeket

Ha egy általános kivételtípust(például Exception SystemExceptionegy könyvtárban vagy keretrendszerben) ad meg, az arra kényszeríti a felhasználókat, hogy minden kivételt elfogjanak, beleértve az ismeretlen kivételeket is, amelyeket nem tudnak kezelni.

Ehelyett vagy hozzon létre egy származtatottabb típust, amely már létezik a keretrendszerben, vagy hozzon létre egy saját típust, amely a keretrendszerből Exceptionszármazik.

Adott kivételek kizárása

Az alábbi táblázat azt mutatja be, hogy milyen kivételt kell kivenni a különböző típusú érvénytelen argumentumok esetében, beleértve a tulajdonság tartozékában lévő set értékparamétert is.

Érvénytelen argumentum Kivétel
null utalás ArgumentNullException
Az engedélyezett értéktartományon kívül (például gyűjtemény vagy lista indexe) ArgumentOutOfRangeException
Érvénytelen enum érték InvalidEnumArgumentException
Olyan formátumot tartalmaz, amely nem felel meg egy metódus paraméter-specifikációinak (például a formátum sztringjének ToString(String)) FormatException
Egyéb esetben érvénytelen ArgumentException

Az alábbi táblázat azt mutatja be, hogy a különböző típusú érvénytelen műveletek esetében melyik kivételt kell kivenni.

Érvénytelen művelet Kivétel
A művelet érvénytelen az objektum aktuális állapotához. InvalidOperationException
A művelet egy megsemmisített objektumon történik. ObjectDisposedException
A művelet nem támogatott (például egy olvasásra megnyitott stream felülírása Stream.Write esetén). NotSupportedException
Az átalakítás túlcsordulást eredményezne (például egy explicit öntött operátor túlterhelését). OverflowException

Minden más helyzetben érdemes lehet létrehoznia egy saját típust, amely abból Exception származik, és ezt eldobja.

Szabálysértések kijavítása

A szabály megsértésének kijavításához módosítsa a kidobott kivétel típusát egy olyan típusra, amely nem a fenntartott típusok egyike.

Mikor kell letiltani a figyelmeztetéseket?

Ne tiltsa el a szabály figyelmeztetését.