4 Şub 2016

C#'ta Try-Catch Kullanımı

Try-Catch yapısı, programımızın herhangi bir durumda bir hata ile karşılaşması durumunda, çalışmayı durdurmak yerine hata ile karşılaşıldığını, hatanın adını,tipini söylemesi istenen durumlarda kullanılır.
try scope'una çalışmasını istediğimiz kod parçası yazılırken, catch scope'una ise try kodunda hata olursa çalışması istenen kodlar yazılır.
catch() yapısında parantez içerisine hata durumları yazılarak, o hatanın alınması durumda yapılacak olan şeyler ayrı olarak belirtilebilir. Hata'nın kendisi görülmek isteniyorsa da hata tipinin yanında bir değişken tanımlanır ve hata bu değişkende tutulur. Bu değişken yazdırılırsa hatanın kendisi de yazdırılmış olur.
  • Sınır dışına çıkma hatasını yakalamak için IndexOutOfRangeException;
catch(IndexOutOfRangeException ex2) //parantez içinde hata tipleri yazılabilir  -> hata tipi sınır dışına çıkma
            {
                MessageBox.Show("lütfen dizi sınırlarını aşmayın." + ex2.ToString());
            }
  • 0'a bölünememe hatasını yakalamak için DivideByZeroException;
catch(DivideByZeroException ex3)    //hata tipi 0'a bölünememe
            {
                MessageBox.Show("0'a bölemezsiniz" + ex3.ToString());
            }
  • Bunlar dışındaki global hatalar için Exception kullanılır;
catch (Exception ex)    //yukaridaki hatalar değilse buraya düşer, global hatalar içindir
            {
                MessageBox.Show("Bir hata aldınız.");
          //kullanıcıya hatayı göstermek istersek Exceptioun'u ex olarak tanımlayıp gösterebiliriz
                MessageBox.Show(ex.ToString());
            }
Catch(Exception) içinde bir değişken kullanma zorunluluğumuz yoktur. Hata tipinin ne olacağıjnı bilmediğimiz ve hata tipini kullanmayacağımız durumlarda Catch(Exception) kullanılmalıdır.
Aşağıda örnek bir try-catch uygulaması bulunmaktadır.
Bir bölme işlemi yapılmaktadır. Bildiğimiz üzere bir sayı 0'a bölünürse programımız hata verir ve kapanır. Biz de programımızın kapanması ve hatayı görebilmek için try-catch yapısı kullanıyoruz. Program buradan indirilebilir.
private void btnBöl_Click(object sender, EventArgs e)
        {
            try
            {
                int bolunen = Convert.ToInt32(txtBolunen.Text);
                int bolen = Convert.ToInt32(txtBolen.Text);
                int sonuc = bolunen / bolen;
                lblSonuc.Text = sonuc.ToString();
            }
            catch (Exception hataAdı)
            {
                MessageBox.Show("HATA İLE KARŞILAŞILDI");
                MessageBox.Show("HATA ADI: " + hataAdı);
            }
        }
Ekran Görüntüsü




Hiç yorum yok:

Yorum Gönder