首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >VBScript - 使用错误处理

VBScript - 使用错误处理
EN

Stack Overflow用户
提问于 2018-05-07 06:16:00
回答 2查看 0关注 0票数 0

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

例如,

代码语言:javascript
复制
On Error Resume Next
'Do Step 1
'Do Step 2
'Do Step 3

当步骤1发生错误时,我希望它记录该错误(或者执行其他自定义功能),然后在步骤2继续。这可能吗?我该如何执行它?

我可以做这样的事吗?

代码语言:javascript
复制
On Error Resume myErrCatch
'Do step 1
'Do step 2
'Do step 3

myErrCatch:
'log error
Resume Next
EN

回答 2

Stack Overflow用户

发布于 2018-05-07 14:41:55

VBScript没有引发或捕获异常的概念,但运行时提供了一个全局的Err对象,其中包含上次执行的操作的结果。必须在每次操作后明确检查Err.Number属性是否为非零。

代码语言:javascript
复制
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不支持此语言功能,因此必须使用On Error Resume Next,如上所述。

票数 0
EN

Stack Overflow用户

发布于 2018-05-07 15:56:42

请注意,On Error Resume Next不是全局设置的。您可以将不安全的代码部分放入函数中,如果发生错误,函数将立即中断,并从包含先行OERN语句的子函数中调用此函数。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档