Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolunBu tarayıcı artık desteklenmiyor.
En son özelliklerden, güvenlik güncelleştirmelerinden ve teknik destekten faydalanmak için Microsoft Edge’e yükseltin.
Özellik | Değer |
---|---|
Kural Kimliği | CA1064 |
Başlık | Özel durumlar genel olmalıdır |
Kategori | Tasarım |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
Genel olmayan bir özel durum doğrudan , Exceptionveya SystemExceptionöğesinden ApplicationExceptiontüretilir.
İç özel durum yalnızca kendi iç kapsamı içinde görünür. İç kapsam dışında kalan özel durumlardan sonra, sadece basit istisnalar istisna yakalamak için kullanılabilir. İç özel durum , Exceptionveya SystemExceptionöğesinden ApplicationExceptiondevralındıysa, dış kod özel durumla ne yapacağını bilmek için yeterli bilgiye sahip olmaz.
Ancak, kodun daha sonra bir iç özel durum için temel olarak kullanılan genel bir özel durumu varsa, kodun daha sonra temel özel durumla akıllı bir şey yapabileceğini varsaymak mantıklıdır. Genel özel durum, , Exceptionveya SystemExceptiontarafından ApplicationExceptionsağlanandan daha fazla bilgiye sahip olacaktır.
Özel durumu genel yapın veya iç özel durumu , Exceptionveya SystemExceptionolmayan ApplicationExceptionbir genel özel durumdan türeyin.
Özel özel durumun kendi iç kapsamı içinde yakalanacağı her durumda eminseniz, bu kuraldan bir iletiyi gizleyebilirsiniz.
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 CA1064
// The code that's violating the rule is on this line.
#pragma warning restore CA1064
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.CA1064.severity = none
Daha fazla bilgi için bkz . Kod analizi uyarılarını gizleme.
Özel durum sınıfı doğrudan Exception'tan türetildiği ve iç olduğu için bu kural ilk örnek yöntem olan FirstCustomException'da tetiklenir. Sınıf da doğrudan Exception'tan türetilmiş olsa da, sınıf genel olarak bildirildiğinden, kural SecondCustomException sınıfında tetiklenmez. Üçüncü sınıf, doğrudan , System.Exceptionveya System.SystemExceptionöğesinden System.ApplicationExceptiontüretilmediğinden kuralı da tetiklemiyor.
// Violates this rule
[Serializable]
internal class FirstCustomException : Exception
{
internal FirstCustomException()
{
}
internal FirstCustomException(string message)
: base(message)
{
}
internal FirstCustomException(string message, Exception innerException)
: base(message, innerException)
{
}
protected FirstCustomException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
// Does not violate this rule because
// SecondCustomException is public
[Serializable]
public class SecondCustomException : Exception
{
public SecondCustomException()
{
}
public SecondCustomException(string message)
: base(message)
{
}
public SecondCustomException(string message, Exception innerException)
: base(message, innerException)
{
}
protected SecondCustomException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
// Does not violate this rule because
// ThirdCustomException it does not derive directly from
// Exception, SystemException, or ApplicationException
[Serializable]
internal class ThirdCustomException : SecondCustomException
{
internal ThirdCustomException()
{
}
internal ThirdCustomException(string message)
: base(message)
{
}
internal ThirdCustomException(string message, Exception innerException)
: base(message, innerException)
{
}
protected ThirdCustomException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
.NET geri bildirimi
.NET, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Ekinlikler
17 Mar 21 - 21 Mar 10
Diğer geliştiriciler ve uzmanlarla gerçek dünyadaki kullanım örneklerini temel alan ölçeklenebilir yapay zeka çözümleri oluşturmak için toplantı serisine katılın.
Hemen kaydolun