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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: