.NET'te özel durumları işleme ve atma

Uygulamaların yürütme sırasında oluşan hataları tutarlı bir şekilde işlemesi gerekir. .NET, uygulamalara hataları tekdüz bir şekilde bildirmek için bir model sağlar: .NET işlemleri özel durumlar atarak başarısızlığı gösterir.

Özel durumlar

Özel durum, yürütülen bir program tarafından karşılaşılan herhangi bir hata koşulu veya beklenmeyen davranıştır. Özel durumlar, kodunda veya çağıran kodda (paylaşılan kitaplık gibi) bir hata, kullanılamayan işletim sistemi kaynakları, çalışma zamanının karşılaştığı beklenmeyen koşullar (doğrulanamayan kod gibi) gibi durumlar nedeniyle ortaya çıkabilir. Uygulamanız bu koşulların bazılarından kurtarılabilir, ancak diğer koşullardan kurtarılamaz. Çoğu uygulama özel durumundan kurtarabilirsiniz, ancak çoğu çalışma zamanı özel durumu kurtarılamaz.

.NET'te özel durum, sınıfından devralan bir System.Exception nesnedir. Bir sorunun meydana geldiği bir kod alanında özel durum oluştu. Uygulama tarafından işilene veya program sonlandırılana kadar özel durum yığına geçirildi.

Özel durumlar ve geleneksel hata işleme yöntemleri

Geleneksel olarak, bir dilin hata işleme modeli, dilin hataları algılama ve onlar için işleyicileri bulmanın benzersiz yolunu veya işletim sistemi tarafından sağlanan hata işleme mekanizmasını kullandı. .NET'in özel durum işlemeyi uygulama yolu aşağıdaki avantajları sağlar:

  • Özel durum atma ve işleme, .NET programlama dillerinde aynı şekilde çalışır.

  • Özel durumları işleme için belirli bir dil söz dizimi gerektirmez, ancak her dilin kendi söz dizimini tanımlamasını sağlar.

  • İşlem ve hatta makine sınırları arasında özel durumlar sızıyor olabilir.

  • Özel durum işleme kodu, program güvenilirliğini artırmak için uygulamaya eklenebilir.

Özel durumlar, dönüş kodları gibi diğer hata bildirimi yöntemlerine göre avantajlar sunar. Hatalar gözlerden kaçamaz çünkü bir özel durum oluşturursanız ve bunu işlemezsanız çalışma zamanı, uygulamanızı sonlandırılır. Geçersiz değerler, bir hata dönüş kodunu denetlemeyi başaramayan kodun sonucu olarak sistemde yayılmaya devam eder.

Sık karşılaşılan özel durumlar

Aşağıdaki tabloda bazı yaygın özel durumlar listele birlikte bunlara neden olan örnekler verilmiştir.

Özel durum türü Açıklama Örnek
Exception Tüm özel durumlar için temel sınıf. Hiçbiri (bu özel durumun türetilmiş bir sınıfını kullanın).
IndexOutOfRangeException Yalnızca bir dizi yanlış dizine alındı olduğunda çalışma zamanı tarafından oluşturma. Bir diziyi geçerli aralığının dışında dizinleme:
arr[arr.Length+1]
NullReferenceException Yalnızca bir null nesneye başvurulsa çalışma zamanı tarafından oluşturur. object o = null;
o.ToString();
InvalidOperationException Geçersiz durumda olduğunda yöntemler tarafından thrown. Temel Enumerator.MoveNext() alınan koleksiyondan bir öğe kaldırılarak çağrıldı.
ArgumentException Tüm bağımsız değişken özel durumları için temel sınıf. Hiçbiri (bu özel durumun türetilmiş bir sınıfını kullanın).
ArgumentNullException Bir bağımsız değişkenin null olmasına izin vermemesi için yöntemler tarafından thrown. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Bağımsız değişkenlerin verili bir aralıkta olduğunu doğrular. String s = "string";
s.Substring(s.Length+1);

Ayrıca bkz.