3 Nisan 2013 Çarşamba

69 - Try Catch... Hata Ayıklama yada Hata Yakalama...


Program çalışırken hemen hemen her aşamasında hatalar meydana gelebilir. Kod parçalarının her zaman beklenildiği gibi çalışacağından emin olmak oldukça zordur. Bu hatalar kişiden kaynaklanabileceği gibi kişinin dışından da kaynaklanabilir. Bilgisayara bir program kurulduğu düşünülsün. Çok gerekli bir program olsa da sürekli programda hatalarla karşılaşılırsa ne kadar gerekli olursa olsun, bir daha bu program kullanılmak istenilmez. Oysa programın hataları giderilmiş, hata verdiğinde hatanın nedeninin ne olduğu söyleniyorsa elbette ki bu programı kullanmak kişiye daha yakın gelecektir. O nedenle de hataların programdan ayıklanması son derece önemlidir.

Yukarıdaki anlatım modüldeki notlardır... Kısaca şöyle söyleyebiliriz... Programınızı yaptınız... Kullanıcılara da sundunuz... Gayet güzel çalışıyor... Ama kullanıcı sonuçta bunlar... Kontrol etmediğiniz her alan sizin için sıkıntı... Pat, bir telefon geldi... Program çalışırken beklenmedik bir hata ile karşılaşıp çıkıyor... Gittiniz baktınız ki sayı girilmesi gereken  bir yere kullanıcı metin giriyor... veya hata yapıp çok büüyk sayılar giriyor... işte bu durumda Try Catch bloğu devreye giriyor... Eğer bu satırlara Try Catch bloğu ile kontrol sağlasaydınız   bir uyarı mesajı verdirip programı devam ettirebilirdiniz... 

Aşağıdaki programda giriş değerleri olarak metinsel ifadeler girilirse program hata verecek ve tekrar giriş yapılması istenecektir... 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace İkiSayiTopla
{
    class Program
    {
        static void Main(string[] args)
        {
            // Klavyeden girilen iki sayıyı toplayan programı yapacağız... Ama Try Catch Bloğu ile kontrol ettireceğiz... 
            int sayi1=0, sayi2=0;

        tekrar: // Hata ile karşılaşılırsa bir daha buraya dönecek...
            Console.WriteLine("Sayıları Giriniz:");
            try // Hata kontrolü yapılıyor... Doğru çalışırsa try bloğundaki kodlar işlenecek... 
            {
                sayi1 = Convert.ToInt16(Console.ReadLine());
                sayi2 = Convert.ToInt16(Console.ReadLine());
            }
            catch (Exception) // Hata olursa Catch bloğundaki kısımlar çalışacak... 
            {
                Console.Clear();
                Console.WriteLine("Hata... Değerleri tekrar girmenizde fayda var... ");
                goto tekrar;
            }

            Console.WriteLine("Toplama = " + Convert.ToString(sayi1 + sayi2));
            Console.ReadLine();
        }
    }
}