Visual Basic Hata yakalama

Visual Basic programlama Dilinde Hata Yakalama

Program yazarken hata mesajlarını nasıl organize ediyorsunuz? Kullanıcı hata mesajlarından bir şey anlayabiliyor mu? Yada kullanıcı hata mesajı ekranda belirince ne yapacağını biliyor mu?

Burada anlattığım yöntem ile program içinde oluşan hata mesajlarını daha anlaşılır biçime sokabiliriz. Böylece hem kullanıcı hata ile karşılaşınca ne yapacağını bilir, hemde siz hatayı çözerken nereden başlayacığınızı bilirsiniz.

Genel olarak özetleyecek olursak bir VB projesinin, projedeki tüm formların ve formlardaki tüm fonksiyonların bir ismi vardır. Kullanıcı göreceği hata mesajında şöyle bir yapı ile karşılaşır.

vbProjeİsmi.Formunİsmi.Fonksiyonunİsmi

Burada ismi olmayan tek şey kod satırlarıdır. Satırlara isimleri de hatayı ararken biz ekleyeceğiz. Böylece tam bir hata mesajı ekranda belirecek, okunduğunda anlaşılan ve yazılımcıyı yönlendiren bir hata mesajı.

Şimdi yeni proje açıp formun üzerine bir buton koyun. Butonun ismi btnHata olacak. Aşağıdaki kodu formun General Declerations bölümünden itibaren kopyalayın. Kod içindeki yorum satırlarına dikkat edin ve gerekli yerleri isteğinize göre değiştirmeyi unutmayın


Const CLASS_NAME = "frmAdresDefteri" 'formun ismini veriyoruz.

Private Sub btnHata_Click()
On Error GoTo Exit_proc ' Hata durumunda Exit_proc kismina gidecek.
Const METHOD_NAME = CLASS_NAME & ".btnHata_Click" 'Bu fonksiyonun ismini veriyoruz.
'Bu durumda elimizde formun ismi ve ilgili fonksiyonun ismi olmuş oluyor.
'**************************
'Buradan sonra yapmak istediginiz işin kodlari gelecek
ren = 10 / 0
'**************************
Exit_proc:
Call EndProcedure(METHOD_NAME)
End Sub

Şimdi bir module ekleyip aşağıdaki kodu yapıştırın. Bu kod ile hata mesajları daha anlaşılır biçime sokulmaktadır. Eğer istenirse daha da genişletilerek farklı işler yapması sağlanabilir.


Public Sub EndProcedure(sMethod As String, Optional sMessage As String)

Dim sText As String Dim lErrNo As Long Dim sErrSource As String Dim sErrDescription As String Dim lERL As Long If Err.Number <> 0 Then

'Hatanin ayrintilarini kaydediyoruz, Boylece eger MTS kullaniyorsaniz Error nesnesi 'kaybolunca bilgisi elimizde kalir lErrNo = Err.Number sErrSource = Err.Source sErrDescription = Err.Description lERL = Erl sText = App.Title & "." & sMethod 'Uygulamanin basliginida ekleyelim 'Eger baska bilgi varsa onuda ekliyoruz If sMessage <> "" Then sText = sText & sMessage 'Okunmasi kolay bir hale getirelim

sText = "Hata yeri : " & sText & vbCrLf & _ "Hata satiri : " & lERL & vbCrLf & _ "Hata icerigi : " & sErrDescription & vbCrLf & _ "Lutfen falan kisi ile kontak kurunuz." 'Ve hatayi kullaniciya gosterelim Err.Raise lErrNo, sErrSource, vbCrLf & sText End If End Sub

Bu işlemlerden sonra projeyi çalıştırıp butona basın. Ekranda şöyle bir mesaj belirecek.

Runtime-Error '11': Hata Yeri : .

.btnHata_Click Hata satiri : 0 Hata Icerigi : Division by zero Lutfen falan kisi ile kontak kurunuz.

Bu hata kullanıcı tarafından size bildirildikten sonra hatanın hangi formda ve hangi fonksiyonda olduğunu bileceksiniz. Eğer butonun fonksiyonunu aşağıdaki gibi değiştirirsek hatanın olduğu satırıda bilmiş olacağız.

 


Private Sub btnHata_Click()
On Error GoTo Exit_proc ' Hata durumunda Exit_proc kismina gidecek.
Const METHOD_NAME = CLASS_NAME & ".btnHata_Click" 'Bu fonksiyonun ismini veriyoruz.
'Bu durumda elimizde formun ismi ve ilgili fonksiyonun ismi olmus oluyor.
'**************************
'Buradan sonra yapmak istediginiz isin kodlari gelecek
10:
20: ren = 10 / 0 'hata olabilecek satirlari markaliyoruz
'Onceden markalamaya gerek yok fakat hata durumunda markalayarak hatayi arayabiliriz.
30:
'**************************
Exit_proc:
Call EndProcedure(METHOD_NAME)
End Sub

Hata mesajı şu şekilde ekranda belirecektir.
Runtime-Error '11':
Hata Yeri : .

.btnHata_Click
Hata satiri : 10
Hata Icerigi : Division by zero
Lutfen falan kisi ile kontak kurunuz

Bu mesajdan sonra yazılım uzmanlarınızdan hangisi sıfıra bölme işlemi için o kodu oraya yazdıysa tek ayak üstünde bir saat bekleme cezası almalıdır.

EndProcedure fonksiyonu içinde istersek hatayı veritabanında bir tabloya bile kaydedebiliriz. Bu tamamı ile size kalmış. Eğer tam bir hata kontrolü istiyorsanız MS SQL Server üzerinde hazırlayacağınız bir "stored procedure" ve değişimlerde e-posta atma özelliğini kullanarak hatanın size direk ulaşmasını da sağlayabilirsiniz.

 



İlk yorumu siz yazın !..

  • Yorumunuz en az 30 karakter olmalıdır. (0)
İlginizi çekebilir...
Sitede Ara
  • Finansal Yönetim Ders Notları | 1-7
    gerçekten emeğinize sağlık çok güzel bir anlatım olmuş....
  • Yazımı Karıştırılan Sözcükler | TDK Yazım Kılavuzu | Doğru Kelime Klavuzu
    Atölye Fransızca'dan dilimize geçmiş bir isimdir. Fransızca atelier olarak yazılır. Evet atelye ...
  • Online Cetvel Sitesi
    Bu ayarları yaptıktan sonra elimdeki cetvelle test ettim gerçekten doğru gösteriyor. Ekrana tuttuğum ce...
  • Doğal Varlık Nedir - Anlamı ve Örnekler
    Çook sevdim bu siteyi... ...
  • 2019 Yeni Golf MK8 Ne Zaman Çıkacak?
    Yabancı para piyasayı allak bullak etti. 2017 yılında golf 7.5 aldım, opsiyonlarıyla birlikte 115.500₺y...
  • İşlemci Veriyolu Hızı Nedir ? Nasıl Çalışır
    İyi bir bilgi olmuş teşekkürler! ...
  • Tevbe İstiğfar Duası
    Allah razı olsun çok mutlu oldum...