的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
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不支持这种语言特性如上所述。
:(......太糟糕了,我猜...... – apandit 2008-10-01 15:12:34
你可以在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
Dylan的回复与VB进入错误处理部门的结果差不多。这就是为什么我总是使用Javascript时,我可以摆脱它。 – wcm 2008-10-01 14:23:33