如果我们在使用On Error Resume Next时遇到多个错误

时间:2017-02-15 08:08:17

标签: vbscript qtp

使用On Error Resume Next时,它会跳过遇到的错误并移动到下一行。 如果我们使用err.Number和err.Description,它会显示与错误相关的消息和编号。 我的问题是:如果它面临的不仅仅是错误......那么它将如何显示?

On Error Resume Next
    intDivideByZero
    floatDivideByZero
If err.Number <> 0 Then
    msgbox "the error number is : " & err.Number
    msgbox "the error description is : " & err.Description
End If
On error Resume 0

1 个答案:

答案 0 :(得分:3)

VBScript错误处理相当有限。您需要在可能发生错误的每一行之后放置一个错误处理程序。此外,Err对象在发生错误后不会自动重置,因此您需要自己重置。否则,在下一个语句之后,该对象仍将指示错误,即使在那里没有出现。

On Error Resume Next
intDivideByZero
If Err Then
    WScript.Echo "0x" & Hex(Err.Number) & ": " & Err.Description
    Err.Clear
End If
floatDivideByZero
If Err Then
    WScript.Echo "0x" & Hex(Err.Number) & ": " & Err.Description
    Err.Clear
End If
On Error Goto 0

您可以通过在过程中包装处理程序并在每个语句之后调用该过程来简化一点:

Sub Trap
    If Err Then
        WScript.Echo "0x" & Hex(Err.Number) & ": " & Err.Description
        Err.Clear
    End If
End Sub

On Error Resume Next
intDivideByZero   : Trap
floatDivideByZero : Trap
On Error Goto 0