为什么类中的错误只在运行时被捕获?

Dan*_*ski 0 ide vb6 error-handling

我有一个VB6类与一个引发错误的方法:

Public Sub DoSomething
  ...
  err.Raise 12345, description:="Error message"
  ...
End Sub
Run Code Online (Sandbox Code Playgroud)

从以下形式调用此方法:

Public Sub ErrTest()
  On Error Goto err1
  obj.DoSomething
  Exit Sub
err1:
  MsgBox err.Description
End Sub
Run Code Online (Sandbox Code Playgroud)

这在运行时工作正常,但在设计时错误处理不起作用.相反,VB6 IDE显示其标准消息框,从那里我可以进入调试模式或结束程序.

为什么会这样?我能预防吗?

one*_*hen 5

在VB IDE中,转到"工具","选项","常规"选项卡,"错误捕获"框.我猜你把它设置为'Break on All Errors',而你可能想要'Break on Unhandled Errors'.

你的Err.Raise陈述给我一个编译错误; 尝试删除大括号.

此外,您可能想要使用

Err.Raise vbObjectError + 12345, Description:="Error message"
Run Code Online (Sandbox Code Playgroud)

即从VB常量vbObjectError中偏移您的错误代码,以确保您不会发生冲突.