Exception Handling - Mayıs 2013 - Güven Şahin
-
Upload
guvensahin -
Category
Technology
-
view
1.359 -
download
3
description
Transcript of Exception Handling - Mayıs 2013 - Güven Şahin
Exception Handling
Güven Şahinguvensahin.com
Exception Nedir ?
• Bir programın derleme(compile-time) veya çalışma zamanında(run-time) ortaya çıkan istisnalara, beklenmedik durumlara verilen isimdir.
Exception
Exception’lar pek çok değişik sebepten dolayı üretilebilirler. Bunlar:• Kullanıcı kaynaklı• Mantıksal• Sistemsel
...olabilirler.
Örnek Exception’lar
• Kullanıcı geçerli olmayan bir veri girebilir.• Açılmak istenen veya sayfaya dahil edilmek
istenen dosya bulunmayabilir.• İşlemin ortasında internet bağlantısı
sonlanabilir.• Veritabanı işlemi sırasında veritabanına
ulaşılamayabilinir vb.
Exception Handling Nedir ?
• Çalışma zamanında ortaya çıkan istisnai ve beklenmedik durumların programlama dilinde algılanması,
• Duruma göre programın akışının buna göre düzenlenmesine,
• Hataların kotarılmasına exception handling denir.
Hata yakalama mekanizması
• İleri seviye programlama dillerinde try, catch vb. istisna(exception) yakalama ifadeleri geliştirilmiştir.
• Bu ifadelere sırasıyla değinelim:
Try
• Try bloğu içerisinde kaynak kodlarımız yer alır. Bu blok içerisinde olası bir exception, catch bloğuna yönlendirilir.
Catch
• Catch bloğu, istisnai durumun yakalandığı ve bunun sonucunda ne yapılacağını belirttiğimiz kısımdır.
Catch
• Catch bloğu birden fazla kullanılabilir. Farklı Exception’larda programın akışını farklı düzenlemek isteyebiliriz. Örnek c# kodu:
Örnek Try/Catch bloğu
• Şimdi javascript örneği inceleyelim.
• Karşılaştığımız belli durumlar, her programlama dilinde aynı tepkiyi vermez.
• Örneğin sıfıra bölünme hatası(10 / 0) javascript ve php’de kod akışını durdurmazken c#’da DivisionByZero exception’ının tetiklenmesine sebebiyet veriyor.
Farklı diller farklı exception’lar...
Farklı diller farklı exception’lar...
• Örneğin tanımlı olmayan bir fonksiyonu çağırmak javascript’te bir exception’a sebep olurken php de bir fatal error’a sebebiyet veriyor ve bütün kod akışı duruyor.
Throw
• Throw, fırlatmak demektir. Bir istisnayı manuel olarak göndermek istediğimizde kullanırız.
• Gönderilen istisna yine Catch bloğu tarafından yakalanır.
• C tabanlı dillerde sintaksı genel olarak şuna benzemektedir:
• throw new Exception(‘Örnek Mesaj’);
• Şimdi javascript ve php örnekleri inceleyelim.
Finally
• Try ve Catch blokları çalıştıktan sonra her şekilde ne olursa olsun çalışacak kodlarımız buraya yazılır.
• Finally bloğu genellikle bazı kaynakları serbest bırakmak için kullanılır.
Retry
• Finally gibi bu ifade de her programlama dilinde bulunmayabilir. Sadece Catch bloğuna yazılır.
• Görevi ise Try içindeki kodu tekrardan çalıştırmaktır. Genellikle veritabanı işlemlerinde transaction’ı tekrardan tetiklemek içindir.
• X++ içinde max 5 defa kullanılabilir.
Retry Örnek Kod Bloğu – X++
Örnek Exception Class’ı
• Kendi exception class’ımızı türettiğimiz ve birden fazla catch bloğu eklediğimiz php örneğimizi inceleyelim.
Hata Yönetimi
• Veritabanı, dosya okuma-yazma gibi istisnaya, hataya yatkın yerlerde try/catch bloklarımızı yerleştirip hataları yönetmeliyiz.
• Aynı zamanda uygulamada alınan exception’ları loglamak iyi bir alışkanlıktır.
Hata Yönetimi - Log
• Uygulamanın çalıştırılma ortamı(server vb) değiştiğinde,
• Veya uygulamayı bir ekiple birlikte geliştiriyorsanız ve devamlı diğer fonksiyonaliteleri etkileyebilecek değişiklikler yapılıyorsa,
• Bunlara benzer durumlarda loglarınıza bakarak exception’ın kaynağını bulabilirsiniz.
Teşekkürler
• Güven Şahin tarafından hazırlanmıştır.• http://guvensahin.com• http://blog.guvensahin.com