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


CA1032: Standard kivételkonstruktorok implementálása

Tulajdonság Érték
Szabályazonosító CA1032
Cím Standard kivételkonstruktorok implementálása
Kategória Design
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Nem

Ok

A típus kiterjed, 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(sztring)

  • public NewException(sztring; kivétel)

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?

Nyugodtan el lehet tiltani a szabály figyelmeztetését, ha a szabály megsértését egy másik hozzáférési szint használata okozza a nyilvános konstruktorok számára.

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.
    }
}

Kapcsolódó információk

CA2229: Szerializálási konstruktorok implementálása