24 Nisan 2014 Perşembe


                                    PROGRAM AKIŞINI KESMEK VE OLAYLARI İŞLEMEK

                HATA AYIKLAMA

Hata, programın çalışması sırasında ortaya çıkan bir durumdur. Hatalar çoğunlukla kullanıcı kaynaklıdır.  Örneğin, kullanıcı programda sayı girilmesi gereken alanda metin bilgisi girerse hata meydana gelir. Programcı bu nedenle oluşabilecek durumlar için hataları kontrol edebilen program kod satırları yazarak programın kırılmasını önler.
            Hata ayıklamanın avantajı, bir hata oluştuğunda otomatik olarak çalıştırılan ExceptionHandler (İstisna Durum Yöneticisi) adında bir kod bloğu tanımlamanıza imkan vererek hata yönetimi verimliliğini artırmaktır. Bir diğer avantajı ise, çok sık oluşan program hataları için nesne tabanlı programlamada standart istisnai durumların tanımlanmış olmasıdır.

HATA TÜRLERİ

            Hatalar üç çeşittir.

Yazım Hataları

            Program içinde kullanılan fonksiyon adları, değişken adları, yapı isimleri ve komutların karakterlerinin yanlış yazımından meydana gelen hatalardır.
Örnek: MessageBox.Show yazılması gerekirken MessageBoxShow yazılırsa yazım hatası oluşur. Oluşan bu hata görev listesi (TastList)  pencerisinde görüntülenir.

Çalışma Zamanı Hataları

            Uygulamanın çalışması icra edilirken bir işlem çalışmayabilir. Örneğin, sıfıra bölme hatası bu tür hatalara bir örnektir.

Mantıksal Hatalar

            Bu hatalar uygulama derlenirken ve yürütülürken oluşur. Bu durumda program çalışsa bile yanlış sonuç üretir.

Örnek:

Yaş bilgisi girilmesi istenen bir alana negatif değer girilemez ya da bir işçinin maaşı hesaplanırken haftada 50 saat yazılması gereken yere 150 saat yazılırsa program çalışır ancak sonuç doğru olmaz. Bu hata bir mantık hatasıdır. 

Debug Menüsü Elemanları

Start

             Uygulamayı çalıştırmak için kullanılır. Klavye kısayol tuşu F5’tir.

Restart

             Debug modunda iken çalışmakta olan uygulamayı sonlandırır ve uygulamanın yürütülmesine yeniden başlatır. Kısayol tuşu CTRL+Shift+F5’tir.

Stop Debugging

Hata ayıklama işlemini sonlandırır ve tasarım moduna geri döner. Kısayol tuşu Shift+F5’tir.

Step Into

            Program kodlarını satır satır çalıştırmak için kullanılır. Kısayol tuşu F11’dir.
Eğer bir sonraki satır, bir metodu çağırırsa Step Into, o metodun başlangıcında durur. Yani, sadece bulunduğu metot içinde çalışır.


Step Over

            Program satırlarını adım adım çalıştırmak için kullanılır. Bir sonraki satırda çağrılan bir metotsa çağrılan metodun içine girmeden metodu çalıştırır ve bir sonraki satırdan itibaren çalışmaya devam eder. Kısayol tuşu F10’dur

Step Out

            Çalıştırılan metodun içindeki belirtilen bütün komutlar işletilir. Eğer metot içerisinden bir başka metot çağrılıyorsa, çağrılan metot işletilerek metodun işleyişi bir sonraki satırdan devam eder.
Run to Cursor

            İmlecin bulunduğu satırdan itibaren programın çalışmasını yürütür.

Watch 

         Bir değişken ya da ifadenin programın icrası esnasında hangi değerleri aldığını görmenizi sağlar. Görmek istediğiniz değişkenin üzerinde iken sağ tıkla açılan menüden Add Watch komutu tıklanarak değişken Watch penceresine aktarılır ve burada değerleri izlenir.

TaskList (Görev Listesi Penceresi)

            Program  içinde tanımlanmayan değişken, metot ya da yazım hatalarını gösteren penceredir.
TaskList penceresini açmak için WIEW menüsünden Task List komutu seçilmelidir.



Diğer bir yöntem olarak ise, klavye kısayol tuşu Ctrl+Alt+K’yı kullanmaktır.

Breakpoint ve Breakpoints Penceresi

            Programın işleyişini istediğiniz bir noktada durdurmak için kod satırına Breakpoint (kesme noktası) ekleyebilirsiniz. Böylece program sizin işaret ettiğiniz kesme noktasında duracaktır.

            Bir kod satırına Breakpoint eklemek için F9 kısayol tuşu veya sağ tıkla açılan menüden “Insert Breakpoint” komutunu vermeniz gerekir.


Program çalıştırılıp kesme noktası eklenen satıra geldiğinde programın çalışması durur. Kırmızı zemin rengi sarıya dönüşür.
Breakpoint’i silmek için Breakpoints penceresindeki kesme noktası üzerine sağ tık yapılıp açılan menüden Delete komutu seçilir.



Kesme noktası eklenmiş satır Breakpoints penceresinde gösterilir.

Output Penceresi

            Programın derlenmesi aşamalarını gösterildiği penceredir. Kısayol tuşu CTRL+Alt+O’dur.
Output penceresinde bulunan açılır liste kutusunda iki seçenek vardır. Bunlar Build ve Debug’dır.




Command Window (Komut Penceresi)

            Uygulamanızı çalışma zamanında takip etme işlemine Trace denir. Trace anında, kod satırlarında yer alan değişkenlerin o anki değerlerini görmenizi ve bu değerlerle matematiksel işlem yapmanızı sağlayan pencere komut penceresidir. Kısayol tuşu CTRL+Alt+A’dır.




Hata Ayıklama ve İz Bulma Sınıfları

Trace ve Debug Sınıfları

            Bu sınıfların kullanımıyla dosyalama mekanizmasının (log) oluşturulması ve yönetilmesi işlemleri yapılmaktadır. Bu sınıfları kullanabilmek için using  deyimiyle birlikte System.Diagnostics namespace’nin projenin başına yazılması gerekir.
            Bu iki sınıf, proje geliştirme aşamasında hata mesajlarını, projenin uygulanması aşamasında ise gerekli dosyalama bilgilerini gerekli yerlere yazdırmak açısından birçok kolaylık sunar. Trace ve Debug sınıflarının tüm özellikleri aynıdır. Tek fark, Debug sınıfı Release uygulaması içine derlenmemesidir.

TraceListener Sınıfları

                Kendilerine gelen bilgiyi tutarak ilgili kaynaklara gönderebilien sınıflar Trace ve Debug sınıflarıdır. Bu işlemleri yapabilmek için TraceLİstener nesneleri kullanılır. Trace ve Debug sınıflarının Listeners (dinleyici) özelliğiyle TraceListener tipinde koleksiyon referansı tutar.

 TextWriterTraceListener

            Bu listener sınıfı Trace ve Debug sınıflarına iletilen bilgiyi bir dosyaya (log) yazmak için kullanılır.

EventLogTraceListener

            Trace ve Debug sınıflarına gelen veriyi Windows Eventlog’un (olay dosyasına) gönderir.
App.Config Dosyası

            Projede kullanılan, örneğin kullanıcı adı ve şifresi, veri tabanının adı ve şifresi ya da bir veri tabanı dosyasına bağlanıyorsanız, veri tabanının konumu gibi bilgiler değiştirilmek istenebilir. Bu değişiklikler için  App.Config dosyasında kullanılır.
            App.Config dosyası bir XML dosyasıdır. XML dosyasının içeriği oluşturulurken yazım kurallarına dikkat edilmelidir.

                        Trace ve Debug Sınıfıyla Kullanılan Komutlar


Write

            Bir şarta bağlı olmadan verilen metni Listener koleksiyonuna yazar.

Writeline

            Bir şarta bağlı olmadan verilen metni Listener koleksiyonuna yazar ve bir sonraki satıra geçer.
WriteIf

            Mantıksal şart olduğunda yazılması verilen metni Listener koleksiyonuna yazar.
WriteLineIf


                        Mantıksal şart olduğunda yazılması verilen metni Listener koleksiyonuna yazar ve bir alt satıra geçer.

Assert

            Koşulun yanlış olması durumunda Listener koleksiyonuna belirtilen mesajı yazdırır.

Fail
            Olumsuz bir durum oluştuğunda otomatik olarak bir bildiri oluşturur. Bildiri mesajı Listener sınıfına yazdırılır ve bir mesaj kutusuyla ekrana gelir.


İstisnai Olaylar

            Bir programın hatasız yazılmış olması o programın hiç hata vermeyeceği anlamına gelmez. Kullanıcıdan ve diğer durumlardan kaynaklanan sebeplerden dolayı doğru yazılmış kodlar da hata verebilir. Bu durumda, hataların oluşumunu her zaman kontrol altında tutamayabilirsiniz. Ancak, oluşabilecek hatalara karşı tedbirler alabilirsiniz. Yapacağınız bu işleme İstisna Yönetimi denir.

System.Exception Sınıfı

            Nesne tabanlı programlamada istisnai olaylar sınıflarla simgelenir. Tüm istisnai olay sınıfları System namespace’ inin Exception sınıfından türetilmelidir. Böylece tüm olaylar Exception sınıfının birer alt sınıfıdır.

Try-Catch Kullanımı

En sık kullanılan hata ayıklama kod bloğudur. Oluşabilecek hatalar try bloğunda, hata durumunda işletilecek kodlar ise catch bloğunda yazılır. Hata olmaması durumunda catch bloğundaki kodlar çalıştırılmaz. Hata olması durumunda ise, hata oluşan kod satırından catch bloğuna kadar olan kod satırları işletilmez. Catch bloğundaki kod satırları işletilir.

Try-Catch bloğu kullanım şekli şöyledir;
Try
{
       // Hata oluşturabilecek olan kodlar
}
catch
{
      // Hata oluşursa işleyen kodlar

 }

Finally Kullanımı

            Hata oluşması durumunda işletilecek kod satırları yoksa programın kırılmasını engellemek için finally bloğu kullanılmalıdır. Finally bloğu hata olsada olmasa da çalışan bir bloktur.

 Finally bloğunun kullanım şekli şöyledir;
Try
{
   // Hata oluşturabilecek olan kodlar
}
finally
{
   // Her koşulda çalışacak kodlar
}

Throw Rethrow Kullanımı

Throw Kullanımı

Throw hatayı fırlatma anlamına gelir. Bazı durumlarda hatalar bilerek oluşturulmak istenebilir. Bunun için, “throw” komutu kullanılır. “throw” ifadesinin kullanıldığı noktada program durarak istenilen istisnayı üretir.

 Rethrow Kullanımı  

Rethrow hatayı yeniden fırlatma anlamına gelir. Rethrow kullanımı birden fazla catch  bloğu kullanıldığı zaman uygulanır. Bir catch bloğunda yakalanan istisnai olay diğer catch bloğunda da yakalanabilsin diye yeniden fırlatılır

  

Hiç yorum yok:

Yorum Gönder