Exception Handling - Mayıs 2013 - Güven Şahin

24
Exception Handling Güven Şahin guvensahin.com

description

Exception handling üzerine temel seviyede bir sunu. İçerisinde exception handling ile ilgili açıkladığım her ifadeyi php, javascript, x++ gibi dillerde nasıl kullanılacağını gösteren örnek kodlarda ekledim. Örnek kodlar: http://benzersanatci.com/phpax/ExceptionHandling_201305.zip

Transcript of Exception Handling - Mayıs 2013 - Güven Şahin

Page 1: Exception Handling - Mayıs 2013 - Güven Şahin

Exception Handling

Güven Şahinguvensahin.com

Page 2: Exception Handling - Mayıs 2013 - Güven Şahin

Exception Nedir ?

• Bir programın derleme(compile-time) veya çalışma zamanında(run-time) ortaya çıkan istisnalara, beklenmedik durumlara verilen isimdir.

Page 3: Exception Handling - Mayıs 2013 - Güven Şahin

Exception

Exception’lar pek çok değişik sebepten dolayı üretilebilirler. Bunlar:• Kullanıcı kaynaklı• Mantıksal• Sistemsel

...olabilirler.

Page 4: Exception Handling - Mayıs 2013 - Güven Şahin

Ö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.

Page 5: Exception Handling - Mayıs 2013 - Güven Şahin

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.

Page 6: Exception Handling - Mayıs 2013 - Güven Şahin
Page 7: Exception Handling - Mayıs 2013 - Güven Şahin

Hata yakalama mekanizması

• İleri seviye programlama dillerinde try, catch vb. istisna(exception) yakalama ifadeleri geliştirilmiştir.

• Bu ifadelere sırasıyla değinelim:

Page 8: Exception Handling - Mayıs 2013 - Güven Şahin

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.

Page 9: Exception Handling - Mayıs 2013 - Güven Şahin

Catch

• Catch bloğu, istisnai durumun yakalandığı ve bunun sonucunda ne yapılacağını belirttiğimiz kısımdır.

Page 10: Exception Handling - Mayıs 2013 - Güven Şahin

Catch

• Catch bloğu birden fazla kullanılabilir. Farklı Exception’larda programın akışını farklı düzenlemek isteyebiliriz. Örnek c# kodu:

Page 11: Exception Handling - Mayıs 2013 - Güven Şahin

Örnek Try/Catch bloğu

Page 12: Exception Handling - Mayıs 2013 - Güven Şahin

• Şimdi javascript örneği inceleyelim.

Page 13: Exception Handling - Mayıs 2013 - Güven Şahin

• 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...

Page 14: Exception Handling - Mayıs 2013 - Güven Şahin

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.

Page 15: Exception Handling - Mayıs 2013 - Güven Şahin

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’);

Page 16: Exception Handling - Mayıs 2013 - Güven Şahin

• Şimdi javascript ve php örnekleri inceleyelim.

Page 17: Exception Handling - Mayıs 2013 - Güven Şahin

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.

Page 18: Exception Handling - Mayıs 2013 - Güven Şahin

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.

Page 19: Exception Handling - Mayıs 2013 - Güven Şahin

Retry Örnek Kod Bloğu – X++

Page 20: Exception Handling - Mayıs 2013 - Güven Şahin

Örnek Exception Class’ı

• Kendi exception class’ımızı türettiğimiz ve birden fazla catch bloğu eklediğimiz php örneğimizi inceleyelim.

Page 21: Exception Handling - Mayıs 2013 - Güven Şahin

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.

Page 22: Exception Handling - Mayıs 2013 - Güven Şahin

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.

Page 23: Exception Handling - Mayıs 2013 - Güven Şahin

Teşekkürler

Page 24: Exception Handling - Mayıs 2013 - Güven Şahin

• Güven Şahin tarafından hazırlanmıştır.• http://guvensahin.com• http://blog.guvensahin.com