VBScript – 使用error handling

我想使用VBScript来捕获错误并logging它们(即错误“logging某事”),然后恢复脚本的下一行。

例如,

在错误恢复下一步
 '做第一步
 '做第二步
 '做第3步

当步骤1发生错误时,我想让它logging该错误(或者执行其他自定义function),然后在步骤2继续。这是可能的吗? 我该如何执行?

编辑:我可以做这样的事情吗?

在错误恢复myErrCatch
 '做第一步
 '做第2步
 '做第3步

 myErrCatch:
 '日志错误
继续下一步

VBScript没有抛出或捕获exception的概念,但是运行时提供了一个全局的Err对象,它包含了上一次执行的操作的结果。 您必须显式检查每个操作后Err.Number属性是否为非零。

On Error Resume Next DoStep1 If Err.Number <> 0 Then WScript.Echo "Error in DoStep1: " & Err.Description Err.Clear End If DoStep2 If Err.Number <> 0 Then WScript.Echo "Error in DoStop2:" & Err.Description Err.Clear End If 'If you no longer want to continue following an error after that block's completed, 'call this. On Error Goto 0 

Visual Basic和Visual Basic for Applications(VBA)支持“On Error Goto [label]”语法,但VBScript不支持此语言function,因此必须使用On Error Resume Next,如上所述。

请注意On Error Resume Next不是全局设置的。 你可以把你不安全的代码部分放到一个函数中,如果发生错误,函数会立即中断,并且从包含OERN语句的子函数中调用这个函数。

 ErrCatch() Sub ErrCatch() Dim Res, CurrentStep On Error Resume Next Res = UnSafeCode(20, CurrentStep) MsgBox "ErrStep " & CurrentStep & vbCrLf & Err.Description End Sub Function UnSafeCode(Arg, ErrStep) ErrStep = 1 UnSafeCode = 1 / (Arg - 10) ErrStep = 2 UnSafeCode = 1 / (Arg - 20) ErrStep = 3 UnSafeCode = 1 / (Arg - 30) ErrStep = 0 End Function