Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
| 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 romboló vagy nem romboló | Szünetelés |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
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örnyezet dobhatja őket:
- 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 ExceptionSystemExceptionegy 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 dobjon el egy már meglévő származtatottabb típust a keretrendszerben, vagy hozzon létre egy saját típust, amely a Exception típusból szá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 hivatkozá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 kifejezett típusátalakító operátor túlterhelése esetén). | OverflowException |
Minden más helyzetben érdemes lehet létrehoznia egy olyan saját típust, amely a Exception-ből származik, és dobja azt.
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.
Example
// This code violates the rule.
throw new Exception();
throw new NullReferenceException();
throw new IndexOutOfRangeException();
// ...
// This code satisfies the rule.
throw new ArgumentException();
throw new ArgumentNullException();
throw new InvalidOperationException();
// ...
// A minimal implementation of inheritance from Exception
public class CustomException : Exception { }
// Or create your own type that derives from Exception
// This code satisfies the rule too.
throw new CustomException();
Mikor kell letiltani a figyelmeztetéseket?
Ne nyomja el a figyelmeztetést ebből a szabályból.