VBA ve VB (5 ve 6) kullanarak on yılı aşkın bir süredir, var, tek bir referans görmemiştim bile uzaktan bile, hangi hata yakalama koşullarının mevcut olduğunu belirleyebiliyor olabilir. Derleyici kesinlikle biliyor olsa da, maruz kalmaz.
Bana göre sorun, hata yakalamanızı nasıl yapılandıracağınız konusunda olabilir.
Altyordamları, On Hata ile aynı alt yordamda bulunan tek bir Hata Goto deyiminde kaydırıyorum. Bir çıkışım var ve hata oluştuğunda ne olduğunu günlüğe kaydederim böylece hatayı düzeltebilirim. Sonra debug.print'i kullanabilir veya günlüğe eklenen hata ayıklama bilgileri içeren bir dize oluşturabilirim.
Sub main()
On Error GoTo Main_Error
'Insert Code Here
Exit Sub
Main_Error:
WriteLog Err.Number, Err.Description
MsgBox ("The program encoutnered an error.")
End Sub
Private Sub WriteLog(ErrNum As Integer, ErrDes As String)
Open "Errors.txt" For Append As #1
Print #1, Now & " " & ErrNum & " - " & ErrDes
Close #1
End Sub
kullandığım ikinci desen bir hata bir dosya (dosyalar eksik olabilir) veya bir veritabanı açma gibi oluşabilecek bu iyi bir şans olduğu alanlarda olduğunu. Sonra hata yakalamayı try catch bloğu gibi kullanırım.
Private Function LoadFile() As Boolean
On Error GoTo Main_Error
'Code before a potentially error-prone statement
On Error Resume Next
Open "aMissingFile.txt" For Input As #1
If Err.Number <> 0 Then
MsgBox ("aMissingFile.txt is missing")
LoadFile = False
Exit Function
End If
On Error GoTo LoadFile_Error
'The rest of your code
LoadFile = True
Exit Function
LoadFile_Error:
WriteLog Err.Number, Err.Description
MsgBox ("The program encoutnered an error.")
LoadFile = False
End Function
Bu kolay hataları ve hata ayıklama ile uğraşan yapan tek Açık hata deyimi dışında yorum kadar kolaydır. Err.number'in hata kodu dönüşünü listelediğini unutmayın, böylece farklı hata türlerini işlemek için mantık ekleyebilirsiniz.
Sorunuzun ayrıntı eksikliği var gibi görünüyor, lütfen sorunuza biraz iltifat ekleyin. – PaulFrancis
[Bu] (http://stackoverflow.com/questions/157747/vbscript-using-error-handling) adresine bir göz atın ve ardından sorunuzu belirli bir sorunla çerçeveleyin –
Düzenledim ve daha iyi açıklamaya çalıştım. – user1283776