C# Try-Catch-Finally Blokları ile Hata Yakalama

Tüm programlama dillerinde olduğu gibi C# dilinde de programın çalışma zamanında meydana gelecek hataları engellemeye yarayan yöntemler bulunmaktadır.

“Try-catch-finally” blokları C#’da hataları yakalamak  için en fazla kullanılan kod blokudur.

Try

{

//Hata oluşabilecek kodlar

}
Catch

{
//Hata oluştuğunda çalışacak kodlar
}
Finally

{
//Her halükarda çalıştırılacak kodlar
}

Try-Catch-Finally Bloklarının Çalışma Şekli

Hata oluşma ihtimali bulunan kod satırları try bloğunun içine yazılır. Try bloğu içerisinde herhangi bir hata meydana gelirse try bloğundaki diğer kodlar çalıştırılmadan catch bloğu içerisine atlanarak buradaki kodlar çalıştırılır. Eğer programda hata meydana gelmezse catch bloğu içerisinde ki kodlar çalıştırılmaz. Try ve catch komutları mutlaka birlikte kullanılması gereken bloklardır. Finally bloğunun kullanımı ise yazılımcının isteğine bağlıdır. Finally bloğunda ki kodlar try ve catch bloklarından bağımsız her halükarda çalıştırılacak kodları içerir.

Konunun daha iyi anlaşılması için bir örnek üzerinden devam edelim. Bir form uygulaması açarak, ortalamayı hesaplayan aşağıdaki gibi bir uygulama yapalım.

 

Hesapla buttonuna tıklayarak aşağıdaki kodları yazalım.

Kodları incelediğimizde kullanıcıdan verilerin alınarak değişkenlere atıldığı kısım try bloğu içerisine yazılmıştır. Bu blok içerisinde ki kodlarda kullanıcının textbox’lara sayısal değerler dışında veri girildiğinde hata oluşacağı öngörülmüştür. Eğer kullanıcı yanlış veri girişi yaparsa catch bloğundaki kodlar çalıştırılır ve “hata meydana geldi” mesajı verilir. Hata oluşsa da oluşmasa da finally bloğu içerisindeki kod çalıştırılarak textboxdaki veriler silinir.

hataTuru olarak tanımlanan değişken Exception turundedir ve yakalanan hatayla ilgili verileri içerir.

Birden Fazla Catch Bloğu Oluşturmak

Uygulamalarda bir çok sebepten dolayı hata oluşma riski bulunmaktadır. Şayet farklı hata türleri oluştuğunda farklı kod blokları işletilmek istenirse birden fazla catch bloğu kullanılabilir.

try

{
//hataya müsait kod bloğu
}
catch(OverFlowException hata1)

{
//Taşma hatası meydana gelirse çalıştırılacak kod bloğu
}
catch(ArithmeticException hata2)

{
//Aritmetiksel hata meydana gelirse çalıştırılacak kod bloğu
}

Ayrıca: “Finally” kod bloğunun kullanılması tamamen programcının isteğine ve ihtiyacına bağlıdır. Kullanılması zorunlu değildir.

Hakan BAYRAM

Gönlünü Yazılıma kaptırmış biri, Hobi olarak başladığı Kodlamaya profesyonellik katarak ilerleyen Hakan BAYRAM, 1986 izmir doğumlu.

You may also like...

%d bloggers like this: