我意识到这是一个较旧的编程环境,但我必须清理一些VB6
代码,我发现它大部分使用:
On Error Resume Next
关于使用On Error Resume Next
的一般共识是什么?
当然,如果出现错误,您可能希望应用程序停止正在执行的操作,回滚所有数据更改,并通知用户错误,而不仅仅是恢复。
何时使用On Error Resume Next
?
答案 0 :(得分:7)
使用 On Error Resume Next 来实现本地结构化错误处理是完全合理的。这包括测试异常并对其采取行动,以及随后解除机制。例如:
On Error Resume Next
GetAttr strFilePath
If Err Then
On Error GoTo 0
'Deal with "no file" scenario.
Else
On Error GoTo 0
'Open and process the file.
End If
这只是一个简单的例子,预计只会出现一种异常。在某些情况下,有必要测试Err.Number的特定值,并根据它们采取不同的操作。
基于GoTo 标签的非结构化方法通常也可以正常工作,但在大多数情况下它并不优越。在VBScript中,上面显示的模式是您甚至没有GoTos或标签的唯一异常处理形式。
令人反感的是在每个程序的头部设置明确的异常测试并忽略它......一种信任力量,Luke 方法试图掩盖编码错误。
答案 1 :(得分:5)
我发现它在错误不能保证用户被问题中断的函数中很有用。一个很好的例子是resize事件。如果你犯了错误或者resize事件出现问题,那么你可能不希望用户看到这个,因为它可能不会影响功能。
我会说,一般情况下,谨慎使用它。
答案 2 :(得分:2)
几乎从不 - 除非有意识地使用例如成功调用将设置特定返回值的行,并且后续代码处理返回值以满足错误情况。