Exception Handling
Hata yönetimidir. Yazılımcılar farklı türlerde, bir çok hata ile karşılaşabilirler. Önemli olan
nokta karşılaştığımız hataları çözebilmek ve bu hataları kısa sürede doğru bir şekilde
kontrol altına alabilmektir. Bir hata ile karşılaştığımızda bu hataların öncelikle ne tür bir
hata olduğunu bilmemiz gerekmektedir. Hatalar kendi içerisinde gruplara ayrılır.
Gelişmiş bir IDE olan Visual Studio anlık olarak kodlarımızı kontrol edecek ve bize yardım
edecektir.
Runtime Errors (Çalışma Zamanı Hataları)
Programda bir syntax hatası olmamasına karşı, kullanıcının yanlış bilgi girmesi veya
programcının kontrol altına almadığı bir durum sonucu karşılaşılan hatalardı. Bu tür
hatalardan korunmak için kullanılan yapılar bulunmaktadır.
Logical Errors – Mantıksal Hatalar
Mantıksal hatalar, tespit edilmesi en zor hata çeşitidir. Syntax olarak hata vermemekle
birlikte, runtime hataları gibi programda bozukluğa sebep olmaz. Yazdığımız kodlar
istediğimiz sonucu döndürmüyorsa Mantıksal bir hata ile karşı karşıya olabiliriz. Mantıksal
hataları tespit etmek için Runtime sırasında kodlarımızı adım adım kontrol etmemiz
gerekebilir.
Hata çeşitlerini incelediğimize göre şimdi sırasıyla bu hataları nasıl yönetebilir ve kontrol
altına alabiliriz bunu inceleyelim. İlk olarak hatalar içerisinde en kolay tespit edilen grup
olan Syntax Hatalarını nasıl giderebileceğimizi inceleyelim.
Projeyi derlediğimizde proje içerisinde bir syntax hatası bulunuyorsa (noktalı virgül
unutmak, scope kapatmamak, yanlış değerleri eşitlemek vb.) Error List penceresinde Syntax hatalarımız görünür. Yapmamız gereken, hata satırını okumak ve hata satırı
üzerine çift tıklayarak hata veren kod satırını görüntülemektir. Syntax hatalarımız görünür. Yapmamız gereken, hata satırını okumak ve hata satırı
üzerine çift tıklayarak hata veren kod satırını görüntülemektir.
Error List
Syntax hatalarımızı görüntüleyebileceğimiz penceredir. Projeyi derlediğimiz zaman
projede ki syntax hataları Error List penceresinde görüntülenecektir.
Error List penceresinde hatalarımız dışında Warnings sekmesi altında uyarılarda
görünür. Warnings sekmesinde çıkan mesajlar hata değildir. Projemiz içerisinde
bulunan kodlar hakkında bize uyarı verirler. Örneğin bir değişken oluşturduysak ve bu
değişkeni kullanmadıysak, RAM’de gereksiz yer kapladığı bilgisini verir. Projenizin
çalışmasına engel değildir.
Try Catch Finally
Runtime hatalarını yönetmek için kullanılır. Yazılımcının ön göremediği durumlarda
hatayı engellemek veya kullanıcı kaynaklı hataları kontrol altına almak için kullanılan
yapıdır.
Try Catch Finally bloklarının çalışma mantığı, Try blokları içerisinde bulunan kodlarda
herhangi bir sebepten hata oluşursa, Try bloğundaki kod akışı durur ve kod akışı Catch
bloğundan devam eder. Catch bloğundaki kodlar işlendikten sonra Finally bloğu
çalıştırılır. Genellikle Finally bloğunda temizleme, form düzenleme gibi işlemler yapılır.
Try Catch Finally yapısında Try ve Finally bloğu mutlaka çalışır. Catch bloğu yanlızca Try
bloğunda oluşacak hata sonucunda çalışacaktır.
try { double sayi1 = Convert.ToInt32(txtSayi1.Text); double sayi2 = Convert.ToInt32(txtSayi2.Text); double sonuc = sayi1 / sayi2; lblSonuc.Text = sonuc.ToString(); } catch (FormatException ex) // Format Hatası olduğunda hata verir. { MessageBox.Show("Lütfen doğru formatta veri giriniz."); } catch (OverflowException ex) //Değişken sınırları dışına çıktıgında hata verir { MessageBox.Show("Değişken sınırları dışına çıktınız."); } catch (DivideByZeroException ex) //Sayıları sıfıra bölmeye çalışırsan yakalar { MessageBox.Show("Sıfıra bölünme hatası .. Sayı Sıfır 'a bölünemez"); } catch (Exception ex) //Geri kalan tüm hataları denetler { MessageBox.Show(ex.Message); }
Exception ex kod satırındaki ex catch bloğunun özelliğidir.. Bu özellik içerisinde
karşılaşılan hata ile ilgili tüm bilgileri tutar. MessageBox.Show(ex.Message); gibi bir komutla
çalıştırdıgımızda yakalanan hatanın mesajını kullanıcıya gösterir. Tüm catch
bloklarında hataları ex ismi ile yakalıyoruz. Aynı isme sahip başka ex’ler olmasına rağmen diğer catch blokları ile çakışmamasının sebebi, her bir ex özelliği kendi scope’u
ile ilgilidir. Kullanılan her ex özelliği kendi scopelarında çalıştığı için birbirleriyle
çakışmazlar.
Break Point
Break Point (Duraklama Noktası) debug işlemi sırasında kod akışını takip
edebileceğimiz ve Runtime’da dönen değerleri program çalışırken izleyebileceğimiz
özelliktir. Proje çalışırken verileri anlık olarak izlememize hangi kod satırında hangi işlem
yapıldığını program çalışırken incelememize olanak tanır.
İzlemeye almak istediğimiz kod’u break point ile işaretlememiz gerekmektedir. Kod akışı
sırasında, sıra break point ile izlemeye almak istediğimiz satıra gelince, visual studio’da
ki kod ekranı açılacaktır. Bizler break point kısayolları ile değerleri program çalışırken
inceleyebiliriz.