Ric*_*ver 15 vb6 error-handling
我知道在下面的示例中,应该使用Resume语句而不是Goto语句.
Sub Method()
On Error Goto ErrorHandler
...
CleanUp:
...
Exit Function
ErrorHandler:
Log error etc
Err.Clear 'Is this line actually necessary?'
Resume CleanUp 'SHOULD USE THIS'
Goto CleanUp 'SHOULD NOT USE THIS'
End Sub
Run Code Online (Sandbox Code Playgroud)
我的问题是两者的执行有什么区别?
Mar*_*rkJ 23
两者都将执行转移到Cleanup标签.据我所知,唯一的区别是
Goto不会清除Err对象(Err.Clear如果使用则必须这样做Goto)并且它会使您的错误处理程序被禁用.如果Cleanup标签后发生错误,则不会处理ErrorHandler.Resume清除Err对象并重新打开错误处理程序(它在处理错误时被禁用).如果在Cleanup标签之后发生错误,则将在以下处理ErroHandler