CA2201: Ayrılmış özel durum türleri oluşturmayın

Özellik Değer
Kural Kimliği CA2201
Başlık Ayrılmış özel durum türlerini harekete geçirmeyin
Kategori Kullanım
Hataya neden olan veya bozulmayan düzeltme Yeni
.NET 8'de varsayılan olarak etkin Hayır

Neden

Yöntem, çok genel veya çalışma zamanı tarafından ayrılmış bir özel durum türü oluşturur.

Kural açıklaması

Aşağıdaki özel durum türleri kullanıcıya yeterli bilgi sağlayamayacak kadar geneldir:

Aşağıdaki özel durum türleri ayrılmıştır ve yalnızca ortak dil çalışma zamanı tarafından oluşturulmalıdır:

Genel özel durumlar oluşturma

Bir kitaplıkta veya çerçevede veya SystemExceptiongibi Exception genel bir özel durum türü oluşturursanız, tüketicileri nasıl işleneceğini bilmedikleri bilinmeyen özel durumlar da dahil olmak üzere tüm özel durumları yakalamaya zorlar.

Bunun yerine, çerçevede zaten var olan daha türetilmiş bir tür oluşturun veya türünden Exceptiontüretilen kendi türünüzü oluşturun.

Belirli özel durumlar oluşturma

Aşağıdaki tabloda, bir özelliğin erişimcisindeki set değer parametresi dahil olmak üzere çeşitli geçersiz bağımsız değişken türleri için hangi özel durumun atıldığı gösterilmektedir.

Geçersiz bağımsız değişken Özel durum
null Başvuru ArgumentNullException
İzin verilen değer aralığının dışında (koleksiyon veya liste dizini gibi) ArgumentOutOfRangeException
Geçersiz enum değer InvalidEnumArgumentException
Bir yöntemin parametre belirtimlerine uymayan bir biçim içerir (örneğin, için ToString(String)biçim dizesi) FormatException
Aksi takdirde geçersiz ArgumentException

Aşağıdaki tabloda, çeşitli geçersiz işlem türleri için hangi özel durumun atıldığı gösterilmektedir.

Geçersiz işlem Özel durum
İşlem, bir nesnenin geçerli durumu için geçersiz. InvalidOperationException
İşlem, atılmış bir nesne üzerinde gerçekleştirilir. ObjectDisposedException
İşlem desteklenmez (örneğin, okuma için açılan bir akışta geçersiz kılınan Stream.Write bir akışta). NotSupportedException
Dönüştürme bir taşmayla sonuçlanır (açık bir atama işleci aşırı yüklemesi gibi). OverflowException

Diğer tüm durumlarda, türetilen Exception ve bunu oluşturan kendi türünüzü oluşturmayı göz önünde bulundurun.

İhlalleri düzeltme

Bu kuralın ihlalini düzeltmek için, özel durumun türünü ayrılmış türlerden biri olmayan belirli bir türle değiştirin.

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

Bu kuraldan uyarıyı bastırmayın.