Istedigimiz, textBox'lara tam sayi disinda birsey yazildiginda "Lütfen alanlara sadece sayi yaziniz" uyarisini gösterebilmekti. Fakat burada iki textBox'a da tamsayi yazmama ragmen ayni uyariyla karsilasiyoruz.
Sebebi: son yazdigimiz kodda hata kontrolünü yaptik fakat hangi hatayi kontrol etmesi gerektigini söylemedik. Herhangi bir hatayla karsilasinca catch blogundaki kodlar çalisacaktir.
Peki hata türüne göre islem yapabilir miyiz?
Evet. try-catch blogunun en güzel özelligi de budur. catch blogunun sayisini artirarak bu islemi gerçeklestirebiliriz.
Öncelikle bu örnekte hangi hatalarla karsilastigimizi belirleyelim:
1. Format Hatasi : FormatException
2. Sifira Bölme Hatasi : DivideByZeroException
Simdi bu hatalarin önlemlerini alalim:
try
{
int sayi1 = Convert.ToInt32(textBox1.Text);
int sayi2 = Convert.ToInt32(textBox2.Text);
int sonuc = sayi1 / sayi2;
textBox3.Text = sonuc.ToString();
}
catch (FormatException)
{
MessageBox.Show("Lütfen alanlara sadece sayi yaziniz");
}
catch (DivideByZeroException)
{
MessageBox.Show("Lütfen sifira bölme islemi yapmayiniz");
}
Ilk catch blogunda format hatasini, ikinci catch blogunda ise sifira bölme hatasini yakaliyoruz.
Eger try içine yazdigimiz kodda format hatasi varsa FormatException'in oldugu catch blogunu, sifira bölme hatasi varsa, DivideByZeroException'in oldugu catch blogunu çalistirir. Hata yoksa try içerisindeki kodlar çalisir, catch bloklarina karismadan islemlere devam eder.
Veysel Ugur KIZMAZ