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:
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.
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.
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.
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
{
// 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
}
{
// 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