的VBScript - 使用错误处理

的VBScript - 使用错误处理

问题描述:

我想使用VBScript来捕获错误并记录他们(即在错误“登录的东西”),然后恢复该脚本的下一行。的VBScript - 使用错误处理

例如,

 
On Error Resume Next 
'Do Step 1 
'Do Step 2 
'Do Step 3 

当在步骤1中,我希望它来记录错误(或与它执行其它自定义函数),然后在第2步中恢复这是可能发生错误?我该如何执行它?

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

 
On Error Resume myErrCatch 
'Do step 1 
'Do step 2 
'Do step 3 

myErrCatch: 
'log error 
Resume Next 
+1

Dylan的回复与VB进入错误处理部门的结果差不多。这就是为什么我总是使用Javascript时,我可以摆脱它。 – wcm 2008-10-01 14:23:33

VBScript中没有抛出或捕捉异常的概念,但运行时提供了包含最后执行的操作的结果,一个全球性的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应用程序(VBA)的支持,而是让你不得不使用上的错误继续下一步如VBScript不支持这种语言特性如上所述。

+9

:(......太糟糕了,我猜...... – apandit 2008-10-01 15:12:34

+2

你可以在if语句中更改WScript.Echo调用一个函数或子,这可能反过来退出应用程序,记录错误等 – StormPooper 2013-03-21 15:08:57

注意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