CA1065: Beklenmedik konumlarda özel durumlar harekete geçirmeyin

TürAdı

DoNotRaiseExceptionsInUnexpectedLocations

CheckId

CA1065

Kategori

Microsoft.Design

Bozan Değişiklik

Bozmayan

Sebep

İstisna atılmasını beklemeyen yöntem bir istisna atar.

Kural Tanımı

İstisna atılmasını beklemeyen yöntemler şu şekilde kategoriere ayrılabilir:

  • Özellik Alım Yöntemleri

  • Olay Erişimci Yöntemleri

  • Eşittir Yöntemleri

  • KarmaKodAlma Yöntemleri

  • DiziyeÇevirme Yöntemi

  • Statik Oluşturucular

  • Sonlandırıcılar

  • Metotları Düzenleme

  • Eşitlik Operatörleri

  • Kapalı Dönüştürme Operatörleri

Aşağıdaki bölümlerde bu yöntem türleri açıklanmaktadır.

Özellik Alım Yöntemleri

Özellikler, temelde akıllı alanlardır.Bu nedenle, mümkün olduğunca bir alan gibi davranırlar.Alanlar istisna fırlatmazlar ve her ikisininde özellikleri gereklidir.İstisna fırlatan bir özelliğe sahipseniz, onu yöntem yapmayı deneyin.

Aşağıdaki özel durumlara özelliği alma yönteminden fırlatılanlara izin verilir:

Olay Erişimci Yöntemleri

Olay erişicisi istisna fırlatmayan basit bir işlem olmalıdır.Bir olay, siz olay işleyicisi eklemeye veya silmeye çalıştığınızda istisna fırlatmamalıdır.

Aşağıdaki özel durumlar olay erişicisi tarafından fırlatılmaya izin verilmiştir:

Eşittir Yöntemleri

Aşağıdaki Eşittir yöntemleri şu istisnaları fırlatmamalıdır:

Bir Eşittir yöntemi istisna fırlatmak yerine true veya false döndürmelidir.Örneğin, Eşittir iki uyuşmayan tipi geçerse ArgumentException fırlatma yerine bir false döndürmelidir.

KarmaKodAlma Yöntemleri

Aşağıdaki KarmaKodAl yöntemleri genellikle şu istisnaları fırlatmazlar:

KarmaKodAl her zaman bir değer döndürmelidir.Aksi halde, karma tablo içindeki öğeleri kaybedebilirsiniz.

KarmaKodAlma sürümleri, ArgumentExceptionfırlatabilen bir argüman alır.Ancak, Object.GetHashCode asla istisna fırlatmamalı.

DiziyeÇevirme Yöntemi

Hata Ayıklayıcı dize biçiminde nesneler hakkındaki bilgileri görüntülemek amacıyla Object.ToString kullanır.Bu nedenle, DiziyeÇevirme bir nesnenin durumunu değiştirmemeli ve istisna fırlatmamalıdır.

Statik Oluşturucular

Statik oluşturuculardan bir istisna fırlatmak, uygulama alanında kullanılamayan tipe sebep olur.Statik oluşturucu özel durumunu fırlatmak için çok iyi bir neden (örneğin, bir güvenlik sorunu) olması gerekir.

Sonlandırıcılar

Sonlandırıcıdan istisna fırlatımı, işlemciden düşen CLR'nin hızlıca başarısız olmasına neden olur.Bu nedenle, sonlandırıcıda istisna fırlatımından sürekli kaçınılmalıdır.

Metotları Düzenleme

Bir IDisposable.Dispose yöntemi istisna fırlatmamalıdır.Düzenleme, genellikle finally maddesi olarak temizleme mantığının bir parçası diye tabir edilir.Bu nedenle, düzenlemeden açıkca fırlatılan bir istisna, kullanıcıyı finally içinde bir istisna yöneticisi eklemeye zorlar.

Bu Dispose(false) kod yolu asla istisna fırlatmamalıdır, çünkü genellikle neredeyse sonlandırıcıdan çağrılır.

Eşitlik Operatörleri(==, !=)

Eşittir yöntemleri gibi, eşitlik operatörleri true veya false döndürmeli ve istisna fırlatmamalıdır.

Kapalı Dönüştürme Operatörleri

Kullanıcı genellikle kapalı bir dönüştürücü operatörünün çağrıldığından bihaber olduğu için, kapalı bir dönüştürücüden fırlatılan istisna beklenmeyen bir durum olur.Bu nedenle, hiçbir istisna kapalı dönüştürücüler tarafından fırlatılmamalıdır.

İhlallerin Düzeltilmesi

Özellik alıcılar için, ya daha fazla istisna fırlatmayan mantık değiştirilir, ya da yöntemin içindeki özellik değiştirilir.

Yukarıda listelenen tüm diğer yöntem türleri için, artık istisna fırlatmaması gereken mantığı değiştirin.

Uyarılar Ne Zaman Bastırılmalı

İhlal fırlatılmış bir istisnanın içindeki bir istisna düzenlemesinden dolayı oluştuysa bir uyarıyı bu kuraldan bastırmak güvenlidir.

İlgili Kurallar

CA2219: Özel durum yan tümceleri içinde özel durum harekete geçirmeyin

Ayrıca bkz.

Diğer Kaynaklar

Tasarım Uyarıları