Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Ö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.
}
}