vb6 - 你为什么要使用 "On Error Goto 0"?

标签 vb6 error-handling

你为什么要使用 "On Error Goto 0"在 VB6 应用程序中?

此语句关闭错误处理程序,这意味着任何错误都会使应用程序崩溃。为什么这会是可取的?

最佳答案

在 VB6 中,您可以指定您希望在例程稍后由特定代码处理错误:

Sub Bar()
    On Error Goto MyHandler
    ...
    ...some code that throws an error...
    ...
    Exit Sub
MyHandler:
    ...some error handler code (maybe pops up a dialog)
End Sub

然而,抛出错误的代码可能是本地化的,并且您不希望例程中的所有其余代码都使用相同的处理程序。在这种情况下,您可以使用“On Error Goto 0”,如下所示:
Sub Bar()
    ...
    On Error Goto MyHandler
    ...some code that throws an error...
    On Error Goto 0
    ...
    ...
    Exit Sub
MyHandler:
    ...some error handler code (maybe pops up a dialog)
End Sub

现在,您已经有效地将错误处理范围限定为仅在该特定代码行失败时才执行。

通过调用“On Error Goto 0”,您并不是说您希望应用程序立即崩溃。您只是说要取消注册您可能在例程中较早设置的任何错误处理程序;错误将像往常一样通过调用堆栈向上传递到调用例程。

关于vb6 - 你为什么要使用 "On Error Goto 0"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9983464/

相关文章:

vb6 - Vista 幻影目录

winapi - VB6:子类窗体未收到 MF_OWNERDRAW 菜单项的 WM_DRAWITEM 消息

vb6 - VB6 中的集中错误处理

Python - Tkinter : error saying my index is out of range, 当有

python - python plot get_loc(self,key,method,tolerance)错误

c# - 使用 c-sharp 进行 FloodFill

vb.net - 我可以只做一个 COM 函数吗? (与 <Runtime.InteropServices.ComVisible(False)> 相反)

node.js - 异步函数中的错误处理

c# - 在每个异常上触发特定的ErrorHandlerAttribute?

java - 在 Spring MVC 中,当 "get by id"找不到项目时,如何优雅地处理 Validate.notNull IllegalArgumentException?