C#: İstisna(Exception) Yönetimi

İstisna yönetimi, program yazımı açısından önemli bir noktadır. Programcı her ne kadar kodlarını dikkatli yazsa da çalışma zamanında oluşabilecek hataları göz önünde bulundurmalıdır. Derleme zamanında oluşan hatalar genellikle yazım hatalarıdır. Bunların tespiti ve düzeltilmesi kolaydır. Ancak programı kullanacak kullanıcının yapacağı bir hata sözkonusu olabilir. Bu tip durumlar için alınan tedbir işlemlerinin tümüne istisna yönetimi denir.
.NET platformunda türetilen her şey Object temel sınıfından türetilir. Doğal olarak istisnalar da sınıflardan türetilmektedir. Tüm istisnai sınıflar Exception sınıfından türetilir. Oluşturulan her istisna için farklı bir sınıf mevcuttur. Bu istisnalar da içinde kendine özgü yöntemler barındırır. System.Exception sınıfında türetilmiş bazı standart istisnalar vardır. Örneğin kullanıcı kaynaklı riskli hatalardan sıfıra bölme hatası için DivideByZeroException istisnası derleyicide varsayılan olarak bulunmaktadır.
İstisna yazımında 3 temel ifade kullanılır.
ifade
{
} şeklinde yazılır.
1. Try
Yapılması istenen işlemler try bloğuna yazılır. Catch ya da Finally ile kullanılması gerekir.
2. Catch
Try bloğu içindeki kodlarda bir hata oluşmuşsa burada yazılan kodlar çalıştırılır. Örneğin uyarı mesajları yazılmış olabilir. Hata olmazsa catch bloğu çalışmaz.
2. Finally
Bazen hata oluşması durumunda çalışacak kodlar yazılmamış olabilir. Bu durumda programın aksamaması için bu blok kullanılır. Ayrıca finally her koşulda çalışan bir bloktur. Örneğin bir işlem yapıp sonuca ulaştıktan sonra metin kutularını silmek için kullanılabilir.
 
Örneğin 3 sınav notunun girişinde yaşanabilecek olası hatalar  kullanıcının 100’den büyük sayı girmesi ya da istenen tipte giriş yapmamasıdır. Bunu engellemek için istisna olayını kullanırsak şöyle bir kod çıkacaktır.
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int n1, n2, n3;
            int ort;
            try
            {
                n1 = int.Parse(textBox1.Text);
                n2 = int.Parse(textBox2.Text);
                n3 = int.Parse(textBox3.Text);
                ort = (n1 + n2 + n3) / 3;
                if (n1 < 100 && n2 < 100 && n3 < 100)

                  textBox4.Text = ort.ToString();

              //  else
                  //  MessageBox.Show(“100den kucuk sayi girin”);
            }
            catch
            {
                MessageBox.Show(“Lutfen 0-100 arası sayı girin”);

            }
            finally
            {
                textBox3.Text = (” “);
                textBox2.Text = (” “);
                textBox1.Text = (” “);
            }

            }
 Burada ek olarak if else bloğunun da kullanılabileceği gösterilmiştir. Kullanıcının 3 nottan herhangi birini 100’den büyük girmesi durumunda uyarı mesajı gelecektir. Aslında bu tip işlemlerle hata riskini kontrol edebiliyorsak istisna kullanmamayı tercih etmeliyiz. Çünkü fazla istisna kullanımı, olası performans kayıplarını da beraberinde getirir.
Reklamlar

One thought on “C#: İstisna(Exception) Yönetimi

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s