Bu yazımda sizlerden gelen maillerde genelde hatalı yazım veya mantık hataları yüzünden uygulamanızın çalışmaması yada düzgün çalışmaması gibi durumlardan söz edeceğim.
Ayrıca bu C#’ın Temelleri için son yazım olacak. Buraya kadar bütün yazıları takip edip artık zorlanmadan örnek uygulamaları yapabiliyorsanız temeli attık demektir.
Visual Studio’nun bize sağladığı avantajlardan birisi de hata kontrolüdür. Bu yazıdan sonra büyük ölçüde hatalarınızı daha rahat anlayıp çözüm getirebileceksiniz. Lafı uzatmadan konuya girelim.
Hata Çeşitleri:
- Derleme hataları
- Çalışma zamanı hatası
- Mantık hatası
İlk önce şundan bahsetmek istiyorum. Hata yapmadan öğrenilmez denir. Bu Yazılım dünyası için daha da gerçekçi bir cümledir. Hatasız kod yazılmaz. Yazılımcı ne kadar deneyimli olursa olsun. Hatta deneyim arttıkça yapılan yanlışı bulmak daha da zorlaşıyor :).
Derleme hataları :
Bir program yazdığınız zaman çalıştırılmadan önce derlenir. Eğer bu derlenme sırasında herhangi bir yazım hatası yada eksik olan kodlar varsa programınız zaten çalışmaz ve derleme hatası alırsınız.
Visual Studio bize bunları derleme sırasında tespit edip gösterir. Şöyle ki değişken tanımladınız ;
int degisken // noktalı virgül yok
int 22degisken; // değişken adı rakamla başlmaz
int11 degisken; // veri tipi yanlış
--------------------
int degisken;
degisken = "mexxanit" // int tipine string deger convert edilmeden atılmaz.
Uygulamayı çalıştırdığınızda visual studio da hatalar “Error List” ekranında görünecektir. Hatanın ne olduğu ve kaçıncı satırda olduğu gibi bilgiler ile.
Bu hatanın üzerine çift tıklayarak hatanın kaynağına gidebilirsiniz.
Çalışma Zamanı Hataları :
Derleme hatası olmayan bir uygulama çalışacaktır. Fakat bu kodların hatasız olduğu anlamına gelmez. Evet yazım hatası olmayabilir ama. Kullanmamanız gereken bir olguyu kullanmış olabilirsiniz. Yada bir olayı yanlış bir kod ile bağlamış olabilirsiniz. Örnek vermek gerekirse ;
- Yazdığınız program internete bağlı olmayı gerektiren bir işlem yapıyor diyelim ve siz bunu derlediniz fakat internet olmadığı koşulda eğer hata kontrolünüz de yoksa bu işlemi yapmaya kalktığında program hata verir.
- Yada siz bir textbox’a numeric bir değer girilmesini istersiniz kullanıcı string girer programda convert yapısı bulunsa dahi hata verir.
Bir kod örneği ile açıklayalım ;
int degisken;
degisken = Convert.ToInt32(textBox1.Text);
Resimdeki gibi bir hata alırsınız.
İşte bu hatalara da Çalışma zamanı hataları denir.
Bunları nasıl yakalarız. Önüne nasıl geçeriz ondan bahsedelim biraz.
Dilin try-catch bloğu diye adlandırılan yöntemi ile bu hataları yakalayabiliriz. Aynı kodumuzdan yola çıkarak.
try
{
int degisken;
degisken = Convert.ToInt32(textBox1.Text);
}
catch (Exception ex)
{
MessageBox.Show("Lütfen bir sayı giriniz.");
}
try kısmına yapmamız gereken işlemin kodunu yazıyoruz. Catch kısmına ise program hata ile karşılaşırsa ne yaptırmamız gerektiğini yazıyoruz. Sonucunda program patlamak yerine ekrana bir messagebox ile uyarı veriyor.
Mantık Hataları :
Bu hatalar yakalanması en zor hatalardır ve kesin olarak yazılımcıdan kaynaklanır. Yapılan hata ne yazım ne de kullanım hatasıdır. Herşey düzgündür fakat ortada doğru olmayan sonuç vardır. Bu durumda bu hatayı bulmak zordur ve genellikle test sırasında ortaya çıkarlar. Ama Visual Studio bunun içinde bize bir güzellik yapmıştır. Tabi daha temelden anlattığım için en basitini anlatacağım ona da Breakpoint denir. Breakpointler Program çalışırken nerelerde duraksaması gerektiğini söylediğimiz yerlerdir. Basit bir kullanımı vardır :
Çok basit bir örnek olacak fakat anlamanızı kolaylaştırır diye düşünüyorum :
Diyelim biz toplama yapmak istiyoruz fakat sonucun doğru olmadığını görüyoruz ama neden yanlış olduğunu kodlara bakınca anlayamıyoruz. İşte breakpoint tam bunun için. Siz şüphelendiğiniz satıra gelmeden önce breakpoint koyuyorsunuz. Visual Studio oraya gelince durup sizin kodlara bakmanıza izin veriyor.
Breakpoint bulunan satır gelince resimde olduğu gibi işaretimiz değişiyor ve biz mouse ile sayi1 in üzerine gelince 20 sayi2 üzerine gelince 10 sonuca gelince de 0 olduğunu görüyoruz fakat bu satır atlanmadığı için sonuc değişkenine bir değer atanmaz. Birde sayi1 ve sayi2 yi mouse ile tarayıp Shift + F9 ‘a bastığımızda ise şöyle bir ekran gelir.
Bize bu iki değiken ve işlem sonucunda ne olduğunu söyler. Basit bir örnek için değersiz gibi görünebilir fakat benim en çok kullandığım özelliklerden biridir.
Bizim problemimiz aslında sonuc’ta idi. Sonucu hala göremiyoruz ve programın bir satır daha ilerlemesini istiyoruz. F10 tuşuna basarak 1 satır daha atlatabiliriz. Şimdi mouse ile sonuc üzerine geldiğimizde 10 yazdığını görebiliriz. Biz toplama yapmak istiyorduk sonuç 30 olmalıydı fakat 10 görünüyor ve bu satırda olduğunu tespit ediyoruz. Ayrıca arkadaslar birden fazla breakpoint te kullanabiliyoruz.
Biraz uzun bir yazı oldu fakat umarım sıkmadan anlatabilmişimdir. Bu yazımla birlikte artık C# temellerini yazmayı bitiriyorum. Artık ileri C# uygulamalarına geçebiliriz. Belkide ASP.net temelleri anlatırım şuan emin değilim.
NOT:Bu noktaya kadar sizlere bişeyler katabildiysem ne mutlu bana. Kolay gelsin…