C# Hata Yakalama - Try - Catch - Finally Kullanımı


Twitter'da Paylaş Favorilerime Ekle

Asp.Net Hata Yakalama

Bir programcı olarak web sayfalarımızda oluşabilecek hatalara karşı ne kadar önlem alsak da ziyaretçi ya da başka sebeplerden kaynaklanan hatalar hep olacaktır. Örneğin bir metin kutusuna ziyaretçinin bilgi girmesi gerekirken boş bırakması veya farklı türlerde ya da hatalı bilgi girmesi hataya sebep olabilir.

Bu tür hatalarda sayfalarımızın çalışmayı kesip ziyaretçinin Asp.Net hata sayfası ile karşı karşıya kalmalarını istemeyiz. Önlem amacıyla Try - Catch - Finally yapısı oldukça kullanışlıdır.

Try - Catch kullanarak programın çalışması esnasında bir hata oluşması durumunda bizim belirttiğimiz işlemlerin yapılmasını sağlayabiliriz. Bu sayede kullanıcı karışık ve istenmeyen hata sayfalarını görmemiş olur. Ayrıca oluşan hatanın türünü elde edip, hata türüne göre farklı işlemlerin yapılmasını da sağlayabiliriz.

Try Catch Finally Yapısı ve Kullanımı

try
{

Yapılmasını istediğimiz ve hataya sebep olma ihtimali olan kodları buraya yazarız.
}
catch
{

Try bloğuna yazdığımız işlemler yapılırken bir hata oluşur ise buradaki işlemler yapılır. Hata olmaz ise bu blok es geçilir.
}
finally
{

Hata olsa da olmasa da mutlaka yapılmasını istediğimiz işlemleri ise buraya yazarız.

Örneğin veritabanı bağlantılarının kapatılması, oluşturulan nesnelerin silinmesi, form elemanlarının temizlenmesi gibi örnekler verilebilir.

Finally bloğunun kullanımı isteğe bağlıdır, ihtiyaç yoksa kullanılmayabilir.
}

Örnek: Aşağıdaki örnekte metin kutularına girilen sayılar ile işlem yapılması denenmektedir. Kullanıcının girişlerine veya farklı sebeplere bağlı bir hata oluşursa Catch bloğu işlenecektir. Hata oluşsa da oluşmasa da finally bloğunda belirtildiği gibi form elemanları temizlenecektir.

try
{
    int a = int.Parse(textBox1.Text);
    int b = int.Parse(textBox2.Text);
    int c = a * b;
    label1.Text = c.ToString();
}
catch
{
    label1.Text = "Bir hata oluştu";
}
finally
    textBox1.Text = "";
    textBox2.Text = "";
}

Hata Türüne Göre İşlem Yapma

Try Catch yapısı ile, oluşan hatanın nedeni hakkında bilgi almak ve ona göre farklı işlemler yaptırmak da mümkündür.

Örnek:

try
{
    int a = int.Parse(textBox1.Text);
    int b = int.Parse(textBox2.Text);
    int c = a * b;
    label1.Text = c.ToString();
}
catch (ArgumentNullException hata1)
{
    label1.Text = "Değer girmediniz.";
}
catch(FormatException hata2)
{
    label1.Text = "Hatalı türde veri girdiniz.";
}
catch (OverflowException hata3)
{
    label1.Text = "Girdiğiniz değer çok büyük.";
}
finally
    textBox1.Text = "";
    textBox2.Text = "";
}

Yukarıdaki örnekte birden fazla catch bloğu kullanılmıştır. Oluşan hatanın türüne göre, ilgili catch bloğu çalıştırılacaktır.

Catch parantezi içinde kullanılabilecek çok sayıda hata türü bulunmaktadır. Bu örnektekilerden farklı hata türleri için de işlem yapılabilir.

Oluşan hata birden fazla türe uyuyor ise daha üstteki catch bloğu çalışacaktır.

asp.net c# hata oluştuğunda mesaj verme, asp.net c# hata yakalama, try catch kullanımı ve örnekleri, finally ne işe yarar, finally ne zaman kullanılır

KONU İLE İLGİLİ ÖRNEKLER