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 9'da 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:
- System.AccessViolationException
- System.ExecutionEngineException
- System.IndexOutOfRangeException
- System.NullReferenceException
- System.OutOfMemoryException
- System.Runtime.InteropServices.COMException
- System.Runtime.InteropServices.ExternalException
- System.Runtime.InteropServices.SEHException
- System.StackOverflowException
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 referans |
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.