C# Try Catch Finally (Hata yakalama)

Olmazsa olmazım try catch hayat kurtarıcı bir şey. Bildiğiniz üzere kodlarımızı yazıp ve kullanıcıya programımızı sunduğumuz vakit kullanıcının girmiş olduğu yanlış verilerden dolayı programımız hata vermekte ve çökmektedir.

Bu gibi durumu hemen hemen her programda yaşamamak için bizler olası bir hatadan dolayı programımız çalışır bir vaziyette olmasını istiyoruz. Bu yüzden kullanıcının her türlü yapacağı hatalarını da düşünerek programımızı yazmamız lazım.

Try bloglarımızı yazmak için kolay bir yolu da try kelimesini yazdıktan sonra iki kere tab tuşuna basarsanız bu blogları sizin yerinize otomatik olarak tamamlar.

try{
}
catch(Exception){
   throw;
}

Bu koddaki throw kelimesi hatayı fırlatma anlamındadır. Eğer hatamız varsa catch bloğumuz çalışır. Exception anahtar kelimesinden sonra bir değişken tanımlıyoruz. Böylece hatamıza daha kolay erişebiliriz.

Finally anahtar kelimesi ise bu bölümündeki kodlar hata olsa da olmasa da gerçekleşir. O yüzden her durumunda da çalışacak olan kodlarımızı yazıyoruz.

Örnek: Kullanıcı girişli iki sayının ortalamasını hesaplayan bir program yapalım. Bunun için ekrana 3 label, 2 textbox ve bir de button koyalım. Label3 kontrolümüze sonucumuzu yazdıralım. Hadi kod tarafına artık geçelim.

try{
     int sayi1, sayi2;
     double sonuc = 0;
     sayi1 = Convert.ToInt32(textBox1.Text);
     sayi2 = Convert.ToInt32(textBox2.Text);
     sonuc = (sayi1 + sayi2) / 2;
     label3.Text = sonuc.ToString();
}
catch (Exception hata){
     MessageBox.Show("Hata: " + hata.Message);
}
finally{
     textBox1.Text = string.Empty;
     textBox2.Text = string.Empty;
}

Programı çalıştırdığınızda messageboxtaki cevap aşağıdaki gibi olur.

Cevap: Hata: Giriş dizesi doğru biçimde değildi.

Programcı her türlü olasılığı düşünmeli ve ona göre program hazırlamalı. Try kısmında hata oluşmazsa finally kısmını da çalışarak program çalışmaya devam eder. Ama hata varsa catch bloğuna girer ve daha sonra da finally kısmına da girerek program hata vermeden çalışmasına devam eder.

You may also like...