我有一个VB脚本。我需要将错误信息记录在文件中。我需要记录每个信息,如错误编号错误描述以及发生错误的子例程。
请提供一些代码
答案 0 :(得分:3)
如果您使用的是VBScript,则可以使用FileSystemObject和Error对象。
将以下内容粘贴到error.vbs中并运行它。它会抛出一个错误,然后将详细信息记录到名为c:\ errors.log
的文件中Option Explicit
On Error Resume Next ' Potential error coming up
Dim MyArray(5)
MyArray(7) = "BWA HA HA"
If Err.Number <> 0 Then
LogError(Err)
Err.Clear
End If
On Error Goto 0 ' Stop looking for errors
Sub LogError(Details)
Dim fs : Set fs = CreateObject("Scripting.FileSystemObject")
Dim logFile : Set logFile = fs.OpenTextFile("c:\errors.log", 8, True)
logFile.WriteLine(Now() & ": Error: " & Details.Number & " Details: " & Details.Description)
End Sub
如果您正在使用ASP页面,那么您可以使用ASPError来获取有关错误的更多详细信息,例如行号等(请记住用Server.CreateObject替换CreateObject)。
修改强> 要获取导致.vbs脚本中的错误的行号,您可以将其作为参数添加到子例程。
答案 1 :(得分:2)
VBScript不支持错误转到标签。以下代码将无法运行 - :
On Error GoTo HandleError''出错将代码跳转到指定信号
Dim aa = 15/0
GoTo Finish''跳过错误
handlingHandleError:
Dim msgSet
msg = Err.Description&amp; vbCrLf&amp; Err.Number的
MsgBox msgFinish:''sciprt结束了
答案 2 :(得分:1)
将整个子函数或函数放在do循环(或其他循环)中。将错误处理放在do循环的外部
private sub BucketList()
do while 1=1
ClimbMountain(top)
if err.Number <> 0 then exit do
SwimOcean(deep)
if err.Number <> 0 then exit do
GiveErrorHandlingToVBS(isNeverGoingToHappen)
if err.Number <> 0 then exit do
exit do
loop
'Error Handler
if err.Number <> 0 then
'handle error
end if
end sub
答案 3 :(得分:-3)
对于VBScript中的错误处理,使用“On Error”clausule。 有三种方法,如何处理错误:
样品:
On Error Resume Next '' ignore errors
SomeIgnorableFunction()
On Error GoTo 0 '' removes error ignoring
SomeImportantFunction()
On Error GoTo HandleError '' on error will code jump to specified signal
Dim a
a = 15 / 0
GoTo Finish '' skips error handling
HandleError:
Dim msg
Set msg = Err.Description & vbCrLf & Err.Number
MsgBox msg
Finish:
'' there is end of sciprt