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

Uygulamalar, yürütme sırasında oluşan hataları tutarlı bir şekilde işleyebilmelidir. .NET, uygulamaları hatalarla ilgili tekdüzen bir şekilde bilgilendirmek için bir model sağlar: .NET işlemleri özel durumlar oluşturarak hatayı 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, kodunuzdaki veya çağırdığınız koddaki bir hata (paylaşılan kitaplık gibi), kullanılamayan işletim sistemi kaynakları, çalışma zamanının karşılaştığı beklenmeyen koşullar (doğrulanamıyor kod gibi) vb. nedeniyle oluşabilir. Uygulamanız bu koşulların bazılarından kurtarılabilir, ancak diğerlerinden kurtarılamayabilir. Çoğu uygulama özel durumundan kurtarabilirsiniz ancak çoğu çalışma zamanı özel durumundan kurtaramazsınız.

.NET'te özel durum, sınıfından System.Exception devralan bir nesnedir. Bir sorunun oluştuğu bir kod alanından özel durum oluşturulur. Özel durum, uygulama tarafından işlenene veya program sonlandırana kadar yığına geçirilir.

Özel durumlar ile geleneksel hata işleme yöntemleri karşılaştırması

Geleneksel olarak, bir dilin hata işleme modeli, dilin hataları algılama ve bunlar için işleyicileri bulmanın benzersiz yöntemine veya işletim sistemi tarafından sağlanan hata işleme mekanizmasına dayanır. .NET'in özel durum işlemeyi uygulama yöntemi aşağıdaki avantajları sağlar:

  • Özel durum oluşturma ve işleme .NET programlama dilleri için aynı şekilde çalışır.

  • Özel durumları işlemek için belirli bir dil söz dizimi gerektirmez, ancak her dilin kendi söz dizimini tanımlamasına izin verir.

  • İşlem ve hatta makine sınırları arasında özel durumlar oluşturulabilir.

  • Program güvenilirliğini artırmak için bir uygulamaya özel durum işleme kodu eklenebilir.

Özel durumlar, dönüş kodları gibi diğer hata bildirimi yöntemlerine göre avantajlar sunar. Bir özel durum oluşursa ve bunu işlemezseniz çalışma zamanı uygulamanızı sonlandırdığından hatalar fark edilmez. Geçersiz değerler, hata dönüş kodu denetiminde başarısız olan kodun bir sonucu olarak sistemde yayılmaya devam etmez.

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

Aşağıdaki tabloda, bunlara neyin neden olabileceğinin örnekleriyle birlikte bazı yaygın özel durumlar listelemektedir.

Ö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 Çalışma zamanı tarafından yalnızca bir dizi düzgün dizine alınmadığında oluşturulur. Bir dizinin geçerli aralığının dışında dizin oluşturma:
arr[arr.Length+1]
NullReferenceException Çalışma zamanı tarafından yalnızca null bir nesneye başvurulduğunda oluşturulur. object o = null;
o.ToString();
InvalidOperationException Geçersiz bir durumdayken yöntemler tarafından oluşturulur. Temel alınan koleksiyondan bir öğeyi kaldırdıktan sonra çağırma Enumerator.MoveNext() .
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 Bağımsız değişkenin null olmasını engelleyen yöntemler tarafından oluşturulur. String s = null;
"Calculate".IndexOf(s);
ArgumentOutOfRangeException Bağımsız değişkenlerin belirli bir aralıkta olduğunu doğrulayan yöntemler tarafından oluşturulur. String s = "string";
s.Substring(s.Length+1);

Ayrıca bkz.