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ó | CA1032 |
| Cím | Standard kivételkonstruktorok implementálása |
| Kategória | Tervezés |
| A javítás romboló vagy nem romboló | Nem törhető |
| Alapértelmezés szerint engedélyezve a .NET 10-ben | Nem |
| Alkalmazandó nyelvek | C# és Visual Basic |
Ok
A típus kiterjeszt System.Exception, de nem deklarálja az összes szükséges konstruktort.
Szabály leírása
A kivételtípusoknak a következő három nyilvános konstruktort kell implementálniuk:
nyilvános NewException()
public NewException(string)
public NewException(string, Exception)
Ha nem adja meg a konstruktorok teljes készletét, az megnehezítheti a kivételek helyes kezelését. Az aláírással NewException(string, Exception) rendelkező konstruktor például más kivételek által okozott kivételek létrehozására szolgál. A konstruktor nélkül nem hozhat létre és nem dobhat ki olyan egyéni kivételpéldányt, amely belső (beágyazott) kivételt tartalmaz, és ez a felügyelt kód feladata egy ilyen helyzetben.
További információ: CA2229: Szerializálási konstruktorok implementálása.
Szabálysértések kijavítása
A szabály megsértésének kijavításához adja hozzá a hiányzó konstruktorokat a kivételhez, és győződjön meg arról, hogy a megfelelő akadálymentességgel rendelkeznek.
Mikor kell letiltani a figyelmeztetéseket?
Biztonságosan figyelmen kívül lehet hagyni egy szabály figyelmeztetését, ha a szabály megsértését az okozza, hogy a nyilvános konstruktorokhoz eltérő hozzáférési szintet alkalmaznak.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA1032
// The code that's violating the rule is on this line.
#pragma warning restore CA1032
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA1032.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Példa
Az alábbi példa egy kivételtípust tartalmaz, amely megsérti ezt a szabályt, és egy helyesen implementált kivételtípust.
// Violates rule ImplementStandardExceptionConstructors.
public class BadException : Exception
{
public BadException()
{
// Add any type-specific logic, and supply the default message.
}
}
[Serializable()]
public class GoodException : Exception
{
public GoodException()
{
// Add any type-specific logic, and supply the default message.
}
public GoodException(string message) : base(message)
{
// Add any type-specific logic.
}
public GoodException(string message, Exception innerException) :
base(message, innerException)
{
// Add any type-specific logic for inner exceptions.
}
}