Chapter 11: Exception Handling
İstisnaları Anlama İstisna İstisna İşleme Yürütülen programda herhangi bir hata koşulu veya beklenmedik davranışlardır. İstisna İşleme Nesne yönelimli teknikler bu tür hataları yönetmek için kullanılır. İstisnalar Exception(istisna)sınıfının nesneleridir veya bundan türetilen sınıflardan biri Microsoft Visual C# 2012, Fifth Edition
Tablo11-1:Seçilen C# istisna altsınıfları Microsoft Visual C# 2012, Fifth Edition
Amaçsızca System Exception(sistem istisnası) Oluşur ise Kasıtlı olarak hata içeren bir programı zorlayarak bir SystemException oluşturursunuz Örneğin: Bir tamsayıyı 0’a bölme istisnalar ile uğraşmak zorunda değilsiniz Programı sonlandırma ani ve affetmeyici olabilir Nesne yönelimli hata işleme teknikleri daha şık çözümler sunar Microsoft Visual C# 2012, Fifth Edition
Amaçsızca System Exception(sistem istisnası) Oluşur ise Şekil11-1: MilesPerGallon programı Microsoft Visual C# 2012, Fifth Edition
Amaçsızca System Exception(sistem istisnası) Oluşur ise Şekil11-2: MilesPerGallon programının 2 şekilde yürütülmesi Microsoft Visual C# 2012, Fifth Edition
Geleneksel Ve Nesne Yönelimli Hata İşleme Metotlarını Anlama Bir değişkenin değerini başka bir sayıya bölmeyi denemeden önce “if” ifadesini kullanarak kontrol et 0’a bölünmeyi önler Ancak , gerçekten “istisna işleme” değilse Eğer sık sorun olacağını düşünüyorsanız Verimli midir? Küçük bir “yükü” vardır Aksi takdirde , istisna nesnesi oluştur. Microsoft Visual C# 2012, Fifth Edition
Nesne Yönelimli Hata İşleme Metotlarını Anlama try(deneme)bloğu Hata üretebilecek ifadeleri içerir. Kodda en az bir catch bloğu veya try bloğunu takip eden bir finally bloğu catch(yakalama) bloğu Bir tür “istisna” yakalar Microsoft Visual C# 2012, Fifth Edition
Nesne Yönelimli Hata İşleme Metotlarını Anlama Şekil11-5: try … catch çiftinin genel formu Microsoft Visual C# 2012, Fifth Edition
Nesne Yönelimli Hata İşleme Metotlarını Anlama Şekil11-6: MilesPerGallon2 programı Microsoft Visual C# 2012, Fifth Edition
Nesne Yönelimli Hata İşleme Metotlarını Anlama Şekil11-7: MilesPerGallon2 programının 2 şekilde yürütülmesi Microsoft Visual C# 2012, Fifth Edition
İstisna Sınıfının ToString() Metodunu ve Mesaj Özelliğini Kullanma istisna sınıfını ve ToString() Kullanma Açıklayıcı bir hata mesajı sağlar Kullanıcı herhangi bir durumu oluşturulduktan istisna yapısı hakkında kesin bilgi alabilirsiniz. Microsoft Visual C# 2012, Fifth Edition
İstisna Sınıfının ToString() Metodunu ve Mesaj Özelliğini Kullanma Şekil11-9: MilesPerGallon3 programı Microsoft Visual C# 2012, Fifth Edition
İstisna Sınıfının ToString() Metodunu ve Mesaj Özelliğini Kullanma Şekil11-10: MilesPerGallon3 programının yürütülmesi Microsoft Visual C# 2012, Fifth Edition
Birden Fazla İstisnayı Yakalama Bir try bloğu içinde ihtiyacınız kadar ifadeleri yerleştirebilirsiniz Yalnızca ilk hata oluşturma ifadesi bir istisna atar Birden fazla catch blokları oluşan istisna durumu için bir eşleşme bulunana kadar sırayla incelenir Çeşitli İstisnalar aynı catch bloğu tarafından ele alınabilir. Microsoft Visual C# 2012, Fifth Edition
Birden Fazla İstisnayı Yakalama Şekil11-13: İki catch blokları olan TwoErrors programı Microsoft Visual C# 2012, Fifth Edition
Birden Fazla İstisnayı Yakalama Şekil11-14: TwoErrors programının çıktısı Microsoft Visual C# 2012, Fifth Edition
Birden Fazla İstisnayı Yakalama Şekil11-15: TwoErrors2 programı Microsoft Visual C# 2012, Fifth Edition
Birden Fazla İstisnayı Yakalama Şekil11-16: TwoErrors2 programının çıktısı Microsoft Visual C# 2012, Fifth Edition
Birden Fazla İstisnayı Yakalama Şekil11-17: Bir catch bloğu olan TwoErrors3 sınıfı Microsoft Visual C# 2012, Fifth Edition
Birden Fazla İstisnayı Yakalama Üçten veya dörtten fazla istisnayı metotdan atmak için kullanılan kötü bir kodlama tarzıdır. Yöntem çok farklı görevleri yerine getirmek için çalışır. Atılan istisna türleri çok özeldir ve yaygınlaştırılmalıdır. Ulaşılamaz bloklar İçerik ifadeleri hiçbir zaman hiçbir koşulda yürütülemez çünkü program mantığı “ orada bulunamaz” Microsoft Visual C# 2012, Fifth Edition
Sonunda Bloğunu Kullanma Sonunda bir try…catch sırası gerçekleştirilecek eylemler içerir try bloğu istisna olup olmadığını tanımlar ve yürütür. Used to perform clean-up tasks A finally block executes after: The try ends normally The catch executes The try ends abnormally and the catch does not execute Microsoft Visual C# 2012, Fifth Edition
Sonunda Bloğunu Kullanma Şekil11-20: bir finally bloğuyla bir try … catch bloğunun genel formu Microsoft Visual C# 2012, Fifth Edition
Sonunda Bloğunu Kullanma Şekil11-21: Bir dosyayı okumaya çalışan ve istisnayı işlemeye çalışan kod biçimi Microsoft Visual C# 2012, Fifth Edition
Dış Metotlarla Atılan İstisnaları İşleme Nesneye yinelik istisna işleme tekniklerini kullanmanın avantajları: istisnalarla uygun yetenekler kullanılarak nasıl başa çıkılacağını ve onları nasıl idare edeceğiniz hakkında karar vermelisiniz. Diğer sınıfların metotlarından atılan istisnaları, yakalamak zorunda değilsiniz. Çağırdığın program onları yakalar ve sende ne yapacağına karar verirsin. Microsoft Visual C# 2012, Fifth Edition
Dış Metotlarla Atılan İstisnaları İşleme Şekil11-22: PriceList sınıfı Microsoft Visual C# 2012, Fifth Edition
Dış Metotlarla Atılan İstisnaları İşleme Şekil11-23: PriceListApplication1 programı Microsoft Visual C# 2012, Fifth Edition
Dış Metotlarla Atılan İstisnaları İşleme Şekil11-24:Kullanıcının geçersiz ürün sayısı girdiğinde PriceListApplication1 programının çıktısı Microsoft Visual C# 2012, Fifth Edition
Dış Metotlarla Atılan İstisnaları İşleme Şekil11-25: PriceListApplication2 programı Microsoft Visual C# 2012, Fifth Edition
Dış Metotlarla Atılan İstisnaları İşleme Şekil11-26:Kullanıcının birkaç kez geçersiz ürün sayısı girdiğinde PriceListApplication2 programının çıktısı Microsoft Visual C# 2012, Fifth Edition