Bir Programlamacının kabusudur programındaki hatalar.iyi programcı programında hatada bırakmaz.Hatalar varsada genelde ya gözden kaçmıştır,yada Farklı bilgisayarda çalıştırıldığında alınmıştır.Kimse Programında hata olsun , hata sonucu programı kırılsın istemez.Anlatım Visual Basic 6.0 içindir.Bir Çoğunuzun işine yarayacaktır eminim.
Programınızı kodladınız daha üzerinde çalışırken testler yaptınız hiç bir sorun yok.Ama farklı bir bilgisayarda çalıştığında ne olduğu anlaşılmaz bir hata çıktı ve programınız kırıldı , açılmadı.Peki program açılsa aldığı hatayı söyleyese ve kırılmasa olmaz mı.Yada hatayı es geçse.hiç hata vermese de çalışsa.Olur elbette ki olur.
Öncelike Hata çıkabilecek neresi var programımıza bakıyoruz.Baktık bir butonumuz var.Ve Bu buton bize C dizininden Örnek .exe isimli bir exe dosyasını çağıracak.
Fakat Ya "C" de böyle bir exe yoksa ? Programımızı Make Edelim ve bakalım ne olacak ?
RunTime Error Dedi Ve Programımız Kapandı.Ama biz İstiyoruz ki Dosya Yok Desin ve programımız kapanmasın.Bunu Sağlamak için kodumuzu şu şekilde değiştiriyoruz.
Gelelim Açıklamalara ;
Err.Description = Hatanın Tanımını Kendi belirler.Yani otomatiktir.Programda hata neyse onu verir.Normalde bu tercih edilir.Bu kodu yazdıktan sonra Programımızı test edelim.
Bu hatayı verdi ve aynen çalışmaya devam etti.Peki Bu ingilizce buraya istediğimizi yazamazmıyız.Elbette ki yazarız ;
hata:
Msgbox "Mesaj",Stil + Düğmeler ,"Başlık"
Bu şekilde yaparsanız sizin istediğiniz şekilde çıkacaktır hatanız.
Yada Şunu da diyebilirsiniz.Kardeşim tek hata bu mu olacak? Elbetteki Hayır.Bunun içinse Err.Number Fonksiyonunu Case ile kullanacağız.
Yani
Peki Nedir Bu kod? Case Err Dedik ve eğer error numarası 68 ise Sürücüye erişilemiyor 43 ise falan filan hatası verdirdik.
Bunu if lede yapabilirdik.
If Err.Number 64 then
Msgbox "64 noldu hata"
End if
Şeklinde.Ama Case kullanırsak Seçeneklerimizi daha kolay sıralayabileceğimizden Daha Pratik olacaktır.Bu nedenle Bu konuda Case Daha Makul olandır.
Hatayı Es Geçmek içinse Genelde Virüs Yazarken Çok kullanılır ;
On Error Resume Next
Kullanılır.Böylece Hata Tesbit Edilirse Hiç Bir Ses Çıkarmadan Hatayı Es Geçer Ve hatalı işlemi atlar.Bu kodları Load Döngüsüne ve/veya işlem yapacak her nesnenin altına koymalısınız.
Mesela Command1 e koydunuz ama Command2 de yok.Command1 hata vermez.Eğer Hatayı Yönlendirdiyseniz Hatayı belirtir.Ama Command2 ye yazmadınız.Bu durumda CMD2 Hata Verir Ve Program Yine kırılır..
Programınızı kodladınız daha üzerinde çalışırken testler yaptınız hiç bir sorun yok.Ama farklı bir bilgisayarda çalıştığında ne olduğu anlaşılmaz bir hata çıktı ve programınız kırıldı , açılmadı.Peki program açılsa aldığı hatayı söyleyese ve kırılmasa olmaz mı.Yada hatayı es geçse.hiç hata vermese de çalışsa.Olur elbette ki olur.
Öncelike Hata çıkabilecek neresi var programımıza bakıyoruz.Baktık bir butonumuz var.Ve Bu buton bize C dizininden Örnek .exe isimli bir exe dosyasını çağıracak.
Fakat Ya "C" de böyle bir exe yoksa ? Programımızı Make Edelim ve bakalım ne olacak ?
RunTime Error Dedi Ve Programımız Kapandı.Ama biz İstiyoruz ki Dosya Yok Desin ve programımız kapanmasın.Bunu Sağlamak için kodumuzu şu şekilde değiştiriyoruz.
Gelelim Açıklamalara ;
Err.Description = Hatanın Tanımını Kendi belirler.Yani otomatiktir.Programda hata neyse onu verir.Normalde bu tercih edilir.Bu kodu yazdıktan sonra Programımızı test edelim.
Bu hatayı verdi ve aynen çalışmaya devam etti.Peki Bu ingilizce buraya istediğimizi yazamazmıyız.Elbette ki yazarız ;
hata:
Msgbox "Mesaj",Stil + Düğmeler ,"Başlık"
Bu şekilde yaparsanız sizin istediğiniz şekilde çıkacaktır hatanız.
Yada Şunu da diyebilirsiniz.Kardeşim tek hata bu mu olacak? Elbetteki Hayır.Bunun içinse Err.Number Fonksiyonunu Case ile kullanacağız.
Yani
Peki Nedir Bu kod? Case Err Dedik ve eğer error numarası 68 ise Sürücüye erişilemiyor 43 ise falan filan hatası verdirdik.
Bunu if lede yapabilirdik.
If Err.Number 64 then
Msgbox "64 noldu hata"
End if
Şeklinde.Ama Case kullanırsak Seçeneklerimizi daha kolay sıralayabileceğimizden Daha Pratik olacaktır.Bu nedenle Bu konuda Case Daha Makul olandır.
Hatayı Es Geçmek içinse Genelde Virüs Yazarken Çok kullanılır ;
On Error Resume Next
Kullanılır.Böylece Hata Tesbit Edilirse Hiç Bir Ses Çıkarmadan Hatayı Es Geçer Ve hatalı işlemi atlar.Bu kodları Load Döngüsüne ve/veya işlem yapacak her nesnenin altına koymalısınız.
Mesela Command1 e koydunuz ama Command2 de yok.Command1 hata vermez.Eğer Hatayı Yönlendirdiyseniz Hatayı belirtir.Ama Command2 ye yazmadınız.Bu durumda CMD2 Hata Verir Ve Program Yine kırılır..


