25 Haziran 2010 Cuma

Hata Yakalama (Exception Handling) – Hata Sınıfı Oluştumak

Bir önceki makalemizde kullandığımız hata sınıflarının tümü Exception sınıfına aitti. Programcılar bazı durumlarda kendi hata sınıfını oluşturmak isteyebilir. Kendi hata sınıfınızı hazırlarken hazırlayacağınız sınıf Exception ve ApplicationException sınıflarının mirasçısı olmalıdır. Aşağıda basit bir Exception sınıfı oluşturuyorum.

    public class MyExceptionClass : Exception
    {
        public MyExceptionClass()
         {

         }
     }

Oluşturduğum bu sınıfın metodu herhangi bir satıra ve parametreye sahip değil. Bu şekilde oluşturduğumuz Exception sınıfını herhangi bir uygulamada kullanabiliriz. Şimdi sınıfımız test edelim. Bunun için formuma bir buton koyuyorum. Click olayında 2 sayının birbirine eşit olup olmadığını kontrol edecek. Eğer sayılar birbirine eşit değilse Exception fırlatmasını istiyorum.

            try
            {
                int a = 3;
                int b = 5;
                if (a == b )
                {
                    MessageBox.Show("Ok");
                }
                else
                {
                    throw new MyExceptionClass();
                }
              }
             catch (MyExceptionClass ex )
              {
                    MessageBox.Show(ex.Message);
               }

throw keywordunu kullanarak programda bir hata olduğunu ve işlemin catch bloğuna düşmesini sağladım. Catch bloğunda ise hazırladığım exception nesnesinin orjinal mesajını kullanıcıya yansıttım.

image1

Eğer kullanıcıya kendi hazırladığımız hata mesajını göstermek istersek MyExceptionClass sınıfında ki metodumuzun string bir değer alarak bunu kullancıya göstermesini sağlayabiliriz.

private string errorMessage;

    public MyExceptionClass(string errorMessage): base(errorMessage)
    {

        this.errorMessage = errorMessage;
    }

Sıfımızı bu şekilde güncelledikten sonra örneğimizi güncelleyerek sonucu görelim.

             try
            {
                int a = 3;
                int b = 5;
                if (a == b)
                {
                    MessageBox.Show("Ok");
                }
                else
                {
                    throw new MyExceptionClass("Sayılar birbirine eşit değil");
                }
            }
            catch (MyExceptionClass ex)
            {
                MessageBox.Show(ex.Message);
            }

image

Bu şekilde kendi exception sınıfımızı üretebilir. Daha da detaylandırabiliriz. Önemli olan sınıfımızda doğru parametreler kullanarak sınıfımızı özelleştirmekten ibaret olacaktır.

Umarım yararlı olmuştur.

Hiç yorum yok:

Yorum Gönder