CA1032: Standart özel durum oluşturucuları uygulayın

Özellik Değer
Kural Kimliği CA1032
Başlık Standart özel durum oluşturucularını uygulayın
Kategori Tasarım
Düzeltme bozucu ya da bozmayan olabilir Kesintisiz
.NET 10'da varsayılan olarak etkin Hayır
Geçerli diller C# ve Visual Basic

Neden

Bir tür System.Exception ile genişletme işlemi yapar ancak tüm gerekli oluşturucuları tanımlamaz.

Kural açıklaması

Özel durum türlerinin aşağıdaki üç genel oluşturucuyu uygulaması gerekir:

  • public NewException()

  • public NewException(string)

  • public NewException(string, Exception)

Yapıcıların tam kümesini sağlamaktaki başarısızlık, istisnaları doğru bir şekilde ele almayı zorlaştırabilir. Örneğin, NewException(string, Exception) imzasına sahip oluşturucu, başka özel durumların neden olduğu özel durumları oluşturmak için kullanılır. Bu oluşturucu olmadan, yönetilen kodun böyle bir durumda yapması gereken, iç (iç içe) bir özel durum içeren özel istisnanızın bir örneğini oluşturamaz ve fırlatamazsınız.

Daha fazla bilgi için CA2229: Serileştirme oluşturucuları uygulama bölümüne bakın.

İhlalleri düzeltme

Bu kuralın ihlalini düzeltmek için, eksik yapıcıları istisnaya ekleyin ve doğru erişime sahip olduklarından emin olun.

Uyarıların ne zaman bastırılması gerekiyor?

Genel oluşturucular için farklı bir erişim düzeyi kullanımı nedeniyle ihlal oluştuğunda, bu kuraldan kaynaklanan bir uyarıyı bastırmak güvenlidir.

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

#pragma warning disable CA1032
// The code that's violating the rule is on this line.
#pragma warning restore CA1032

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini noneolarak ayarlayın.

[*.{cs,vb}]
dotnet_diagnostic.CA1032.severity = none

Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.

Örnek

Aşağıdaki örnek, bu kuralı ihlal eden bir özel durum türü ve doğru uygulanan bir özel durum türü içerir.

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

Ayrıca bkz.

CA2229: Serileştirme oluşturucularını uygulayın