C# Dersleri 15 - Try,Catch ve Finally

     .Net Framework'te, bir uygulamanın çalışması sırasında oluşan hatalar Exception olarak adlandırılır. Bir Exception oluştuğunda uygulamanız donabilir, kapanıp data kaybına neden olabilir ya da türlü güvenlik açıklarına sebep olabilir. Ayrıca kullanıcı deneyimi açısından da uygulamadaki hataların kontrol altında tutulması çok önemlidir. Kullanıcıya, developer olmayan birisine anlamsız gelecek hatalar göstermek yerine daha anlaşılır hata mesajları vermemiz beklenir. Uygulama hatalarının kontrol altında tutulmasına Exception Handling denir. C# dilinde try-catch komutu bu konuda en büyük yardımcımızdır.

     Exception Handling

     try keywordu, Exception Handled bir kod bloğunun başlangıcını işaret eder ve ardından catch kod bloğu gelmek zorundadır. Eğer try bloğu içinde herhangi bir hata oluşursa, catch bloğu çalıştırılır.

     Biraz karmaşık oldu farkındayım ama aslında basit. Örneğin kullanıcıdan Textbox aracılığıyla data alacaksınız ve bu data sayısal bir değer olmalı. Dolayısıyla int tipine çevirmeniz gerekiyor. Ancak kullanıcı bu Textbox'a sayısal bir değer girmezse ne olur? Programınız donar. Ya da try-catch kullanıp bu problemi yakalarsınız ve kullanıcıya sayısal değer girmediğini belirten bir hata mesajı gösterebilirsiniz.

     Bir önceki makalede C# ile faktoriyel hesabı yapmıştık ve kullanıcının Textbox'a sayısal değer gireceğini varsayarak yazmıştık bu kodu. Şimdi o koda ekleme yapalım ve sayısal değer girmediyse hata mesajı gösterelim :     

private void btnDevam_Click(object sender, EventArgs e)
{
    int deger = 0;
    try
    {
        deger = Convert.ToInt32(txtFaktoriyel.Text);
    }
    catch (Exception ex)
    {
        deger = 0;
        MessageBox.Show("Lütfen sayısal bir değer giriniz");
    }

    int faktoriyel = 1;

    for (int i = 1; i <= deger; i++)
    {
        faktoriyel = faktoriyel * i;
    }

    MessageBox.Show(faktoriyel.ToString());
}

     Öncelikle deger isimli değişkene başlangıç değeri olarak 0 atadık. Daha sonra try kod bloğu oluşturup, hata vermesi muhtemel kodu yazıyoruz. Convert.ToInt32(), eğer kullanıcı sayısal bir data girmediyse Exception oluşturacaktır. catch bloğunda da "Lütfen sayısal bir değer giriniz" mesajlı bir MessageBox gösteriyoruz. Bu sayede uygulamamız donmak(crash) yerine anlaşılır bir hata vermiş oluyor.

     catch keywordunun yanındaki "Exception ex", oluşan Exception ile ilgili bilgiler taşır. Örneğin ex.Message, .Net Framework tarafından üretilen hata mesajını gösterir.

     finally kod bloğu, adı üzerinde try-catch bloğunun sonunda çalışacak kod bloğudur. try bloğunda Exception oluşsa da oluşmasa da finally bloğu(varsa) çalıştırılır.

     Projeyi buradan indirebilirsiniz.

 

YORUMLAR
Email Adresi *
Görüntülenecek İsim *
Yorum *
Paylaş
  • f