Aracılığıyla paylaş


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

TypeName

ImplementStandardExceptionConstructors

CheckId

CA1032

Kategori

Microsoft.Design

Değişiklik kesiliyor

Bölünemez

Neden

Bir tür genişleten Exception ve gerekli tüm Kurucular bildirmiyor.

Kural Tanımı

Özel durum türü aşağıdaki Kurucular uygulamalısınız:

  • Ortak NewException()

  • Ortak NewException(string)

  • Ortak NewException (dize, özel durum)

  • Korunan veya özel NewException (SerializationInfo, StreamingContext)

Kurucular kümesini kasıt doğru özel durumlarý iþlemek zor yapabilirsiniz.Örneğin, imzası bulunan kurucu NewException(string, Exception) tarafından diğer özel durumlar nedeniyle özel durumlar oluşturmak için kullanılır.Oluşturmak ve bir örneğini (iç içe geçmiş) iç özel durum içeren özel özel durum bu, hangi hangi yönetilen kod böyle bir durumda yapmanız gereken kurucudur.Kural gereği ilk üç özel durum Kurucular ortaktır.Dördüncü Ağzı açık bir sınıf içinde korumalı ve mühürlenmiş sınıflar, özel kurucudur.Daha fazla bilgi için bkz. CA2229: Serileştirme oluşturucularını uygulayın

İhlalleri düzeltmek nasıl

Bu kuralı ihlal düzeltmek için eksik Kurucular özel durumu ekleme ve doğru erişilebilirlik sahip olduğunuzdan emin olun.

Uyarıları ne zaman

Genel oluşturucuları için farklı erişim düzeyi kullanarak ihlaline neden bir uyarı bu kuraldan bastırmak güvenlidir.

Örnek

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

using System;
using System.Runtime.Serialization;
namespace DesignLibrary
{
   // 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.
      }
      protected GoodException(SerializationInfo info, 
         StreamingContext context) : base(info, context)
      {
         // Implement type-specific serialization constructor logic.
      }
   }  
}