在VBScript中,我正在运行一个程序,我希望它可能位于脚本的PATH或当前目录中。但是,如果它不在那些地方并且无法找到,则脚本会因错误而停止"系统找不到指定的文件"。这个命令并不重要,我想在这种情况下继续。这可能吗?
答案 0 :(得分:1)
正如@Noodles在评论中指出的那样,您可以使用On Error Resume Next
让解释器将错误处理移交给您/您的代码,然后通过对其进行掩饰来“处理”错误:
Set sh = CreateObject("WScript.Shell")
...
On Error Resume Next
sh.Run "unimportant.exe", 0, True
On Error Goto 0
...
如果你想要更加勤奋并且如果发生其他错误则让脚本失败添加例程以检查错误号并在显示错误消息后退出(如果它既不是0也不是0x80070002:
Set sh = CreateObject("WScript.Shell")
...
On Error Resume Next
sh.Run "unimportant.exe", 0, True
If Err.Number <> 0 And Err.Number <> &h80070002 Then
WScript.Echo Trim("[0x" & Hex(Err.Number) & "] " & Err.Description)
WScript.Quit 1
End If
On Error Goto 0
...
使用On Error Resume Next
时要非常小心。谨慎使用它,并尽快再次禁用它(On Error Goto 0
)。与流行的看法相反,声明并没有神奇地让错误消失。它只负责检查和处理错误。基本上它是“闭嘴的VBScript术语,我知道我在做什么”。