陷阱错误或'恢复下一步'

CJ7*_*CJ7 5 vb6 error-handling

我意识到这是一个较旧的编程环境,但我必须清理一些VB6代码,我发现它大多数使用:

On Error Resume Next
Run Code Online (Sandbox Code Playgroud)

关于使用的一般共识是On Error Resume Next什么?

当然,如果出现错误,您可能希望应用程序停止正在执行的操作,回滚任何数据更改,并通知用户错误,而不仅仅是恢复.

什么时候使用是个好主意On Error Resume Next

Bob*_*b77 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
Run Code Online (Sandbox Code Playgroud)

这只是一个简单的例子,预计只会出现一种异常.在某些情况下,有必要测试Err.Number的特定值,并根据它们采取不同的操作.

基于GoTo 标签的非结构化方法通常也可以正常工作,但在大多数情况下它并不优越.在VBScript中,上面显示的模式是您从未拥有的唯一形式的异常处理,因为没有GoTos或标签.

令人反感的是在每个程序的头部设置明确的异常测试并忽略它......一种信任力量,Luke试图掩盖编码错误的方法.


Pau*_*els 5

我发现它在错误不能保证用户被问题中断的函数中很有用.一个很好的例子是resize事件.如果你犯了错误或者在resize事件中出现问题,那么你可能不希望用户看到这个,因为它可能不会影响功能.

我会说,一般来说,谨慎使用它.