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:
- System.AccessViolationException
- System.ExecutionEngineException
- System.IndexOutOfRangeException
- System.NullReferenceException
- System.OutOfMemoryException
- System.Runtime.InteropServices.COMException
- System.Runtime.InteropServices.ExternalException
- System.Runtime.InteropServices.SEHException
- System.StackOverflowException
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.