如果我们在使用 On Error Resume Next 时遇到多个错误
If we face more than one error while using On Error Resume Next
当使用 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
VBScript 错误处理相当有限。您需要在可能发生错误的每一行之后放置一个错误处理程序。此外,Err
对象不会在出错后自动重置,因此您需要自己执行此操作。否则,即使 none 出现在下一个语句之后,对象仍会指示错误。
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
当使用 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
VBScript 错误处理相当有限。您需要在可能发生错误的每一行之后放置一个错误处理程序。此外,Err
对象不会在出错后自动重置,因此您需要自己执行此操作。否则,即使 none 出现在下一个语句之后,对象仍会指示错误。
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