Visual Basic 6.0 hata ayıklama işlemlerinde yardımcı olan err nesnesi vardır. Bu nesne içerisindeki özellik ve sublar sayesinde hata numarası, hata açıklaması, hata kaynağı gibi önemli bilgiler elde edilebilir.
Hatalar kullanıcıya yansıtılmamalıdır. Zaten hata ayıklama sürecinin temel amacı budur. Ancak runtime hataları her zaman engellenemeyebilir. Bu durumlarda hata denetiminin sağlanması önemlidir. Program herhangi bir çalışma anı(runtime) hatası ile karşılaştığında, kullanıcısına hatayı programı yazan kişiye yeterli bilgi sağlayabilecek şekilde göstermelidir.
On Error Resume
Bu ifade, hata oluştuğunda hataya sebep olan komutun tekrar işletilmesini sağlar. Uygun yerlerde kullanılmazsa sürekli hata oluşur.
On Error Resume Next
Hata oluşması halinde hataya sebep olan ifade atlanır ve sıradakine geçilir. Bu ifadeyi her yerde kullanmak hataların ayıklanmasını sağlamaz, hataları sadece örter. Bu yüzden sadece oluşacak hataların program işleyişine etki etmeyecek nitelikteyse kullanılmalıdır.
On Error Goto Etiket
Hata oluşursa etiketlenmiş bir satıra atlar. Denetimi en iyi sağlayan yöntemdir.
Tüm Hataları Merkez Bir Prosedürde Toplama
Hata denetimi küçük programlarda önemsiz olabilse de uzun ve karmaşık kodlarda gözardı edilmemesi gerekir. Program öncelikle hata ayıklama sürecinden geçirilmelidir. Çünkü hatalar genelde kodlardan değil çalışma anında eksikliklerden ve kullanıcı hatalarından doğar. Bu yüzden normal bir kullanıcının yapabileceği tüm hataları öngörebilmek önemlidir. Öngörülen hatalar sadece kullanıcı tarafından düzeltilebilir nitelikte de olabilir. Örneğin hesap yapan bir prosedürde kullanıcıdan alınan veriler sıfıra bölme hatası yaratıyorsa bu hata giderilmez. Ancak uygun bir dille kullanıcıya iletilip kullanıcının hatasını düzeltmesi sağlanır. Hata ayıklamada bütünlüğü sağlamak ve karmaşayı azaltmak için tüm hatalar tek bir prosedür altında yorumlanabilir. Çünkü kod yığını arasında hatanın doğduğu prosedürü aramak ve hatayı engellemek oldukça yorucu olur. Programlarımın bazılarında kullandığım yöntem :
Private Function HataYorumla() As Integer
Select Case Err.Number
Case 11:
MsgBox "Sıfıra bölme hatası gerçekleşti!"
HataYorumla = 1 'Burada yapılması isteneni ayarlıyoruz.
' Burada oluşması muhtemel diğer runtime hataları listelenmeli ve uygun mesajlar veya düzeltmeler yapılmalı
Case Else:
MsgBox "Hata Kodu: " & Err.Number & vbCrLf & "Açıklama: " & Err.Description, vbExclamation, "Hata!"
HataYorumla = 2
End Select
End Function
Private Sub Form_Load()
On Error GoTo Hata
MsgBox 10 / 0
Exit Sub
Hata:
Select Case HataYorumla
Case 1: 'Hata mesajı vermek yeterliyse.
Exit Sub
Case 2: ' Sonraki işleme geçilmesi istenebilir.
Resume Next
Case 3: ' HataYorumla prosedüründe kullanıcının hatayı gidermesi sağlanmış olabilir.
Resume
Case 4: ' Hata programın işleyişine engel teşkil ediyor olabilir, bu durumda programı bitir.
End
End Select
End Sub
Yukarıda "Hata" etiketinin altındaki kodlar hata oluşması muhtemel prosedürlere yerleştirilebilir ve böylece tüm hatalar HataYorumla fonksiyonuna yönendirilerek yorumlanıp uygun mesaj verilebilir.
Err(error) Nesnesi
Bu nesnenin en önemli iki özelliği, "Number" ve "Description" dur. Visual basicte her bir hatanın sabit bir numarası vardır. Err.Number bu numaraya erişilmesini sağlar. Hata yokken değer 0dır. Hata eğer hataya neden olan nesne tarafından açıklanmışsa buna Err.Description ile erişilir. Bu iki özellik dışında LastDllError özelliği, son çağrılan Dll dosyasından dönen hata kodunu taşır. Source hatanın meydana geldiği kaynağı belirtir.
Err nesnenin Clear ve Raise adından iki prosedürü vardır. Clear nesneyi sıfırlar. Raise prosedürü ise yapay olarak hata meydana getirir:
Sub Raise(HataNumarası As Long, [Kaynak], [Açıklama], [YardımDosyası], [Yardımİçeriği]) Not: Köşeli parantezler, parametrenin seçimlik/isteğe bağlı(optional) olduğunu gösterir.
Okunma Sayısı: 1308
Yayınlanma Tarihi: 18 Temmuz 2009 Cumartesi - 20:10
Anahtar Kelimeler: hata ayıklama, hata giderme, err nesnesi, visual basic, err.raise, prosedürler, runtime, error
Onaylı yorum bulunmuyor.
Yorum/Görüş Bildir