Eğer bir programlama diliyle ilgileniyorsanız muhakkak hatalar da yaşıyorsunuzdur. Bu hatalar yapmış olduğunuz programın istenmedik bir şekilde sonlanmasına neden olabilir. Eğer siz hata olsun olmasın programın devam etmesini istiyorsanız. C# da Try Catch Finally yapısını kullanmalısınız.
Bizim beklemediğimiz bu özel durumlarda hataları bizim yerimize bulur alternatif yollara başvurarak programın düzgün devam etmesini sağlar.
Try Catch Finally İşleminin Çalışma Yapısı
1. Try bloğu içindeki tüm kodlar çalıştırılmaya çalışılır. Tüm kod ifadeleri düzgün bir şekilde çalıştırılırsa sorun olmadığını anlarız. Eğer kod ifadelerinden bir veya birden fazla bir hata ile karşılaş ılınırsa hatayı yakalamak için programımız catch bloğuna atlar.
2. Catch bloğu belirli bir özel durumu yakalayıp işler. Try bloğunda oluşabilecek birden fazla hatayı ayrı ayrı yakalayıp işlemek isterseniz birden fazla catch ifadesi yazabilirsiniz.
3. Finally bloğu Try bloğundan hemen sonra veya en son oluşturulmuş catch bloğundan hemen sonra çalışır. Program try bloğuna girdi ise kesinlikle finally bloğu da çalışacaktır. Bu işlemler ile programın her zaman sorunsuz şekilde çalışmasını sağlarız.
Try Catch Finally Kullanım Şekilleri
Belirli Özel sınıfı yakalayan bir catch işleyişi
try
{
....
}
catch(FormatException fEx)
{
....
}
Try Catch Finally Kullanım Şekilleri
Belirli Özel sınıfı yakalayan bir catch işleyişi
try
{
....
}
catch(FormatException fEx)
{
....
}
Bütün özel durumları yakalayan bir catch işleyişi
try
{
....
}
catch(Exception Ex)
{
....
}
Özel durum oluşsa da programın çalışmasını devam ettirmek için kullanım.
try
{
....
}
finally
{
//finally bloğu her zaman çalışır...
}
Örnek Uygulama:
Bu uygulama ile try catch finally yapısı ile hata nasıl yakalanır ve olası sorunlar nasıl düzeltilir ve programın sorunsuz çalışmasını sağlamayı göreceğiz.
Butona her bastığımda rastgele sayı üretip bölme işlemine tabi tutuyorum. Burada oluşan hatalara göre try catch finally konutları ile yönlendirmeler yaptım.
Yaptığım örnekte 0 ile 5 arasında rastgele bir sayi seçiliyor ve bu sayi değeri sonuc değişkenine bölünüyor. yani şu işlem sonuc = sonuc / sayi yapılıyor. bölme kuralına göre payda 0 olursa bölme sonucu tanımsız olur. Rastgele seçilen sayi değişkenine 0 atandığında bölme işlemi yapılamayacağından program hata verir. Biz bu komutu try catch finally yapısında yazdığımız için hata vermeyecek bunun yerine catch bloğu çalışacaktır. catch işleminden sonra ise finally bloğu çalışacaktır.Butona her bastığımda rastgele sayı üretip bölme işlemine tabi tutuyorum. Burada oluşan hatalara göre try catch finally konutları ile yönlendirmeler yaptım.
int sayi = 0;
int sonuc=10;
private void button1_Click(object sender, EventArgs e)
{
try
{
Random RasSayi = new Random();
sayi = RasSayi.Next(5);
sonuc = sonuc / sayi;
lstboxSonuc.Items.Add(sonuc.ToString());
label1.Text = sonuc.ToString();
}
catch (Exception ex)
{
MessageBox.Show("İşlem başarısız...");
}
finally
{
if (sayi==0)
{
lstboxSonuc.Items.Clear();
sayi = 0;
sonuc = 10;
}
}
}
Uygulamayı indir...
0 yorum: