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

时间:2008-12-03 09:48:47

标签: error-handling vb6 ide

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

Public Sub DoSomething
  ...
  err.Raise 12345, description:="Error message"
  ...
End Sub

从表单中调用此方法:

Public Sub ErrTest()
  On Error Goto err1
  obj.DoSomething
  Exit Sub
err1:
  MsgBox err.Description
End Sub

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

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

2 个答案:

答案 0 :(得分:5)

在VB IDE中,转到“工具”,“选项”,“常规”选项卡,“错误捕获”框。我猜你把它设置为'Break on All Errors',而你可能想要'打破未处理的错误'。

您的Err.Raise语句给我一个编译错误;尝试去除大括号。

另外,您可能想要使用

Err.Raise vbObjectError + 12345, Description:="Error message"

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

答案 1 :(得分:1)

您还可以通过右键单击代码窗口来更改错误捕获选项。 “切换”子菜单提供以下选项:

打破所有错误
打破课堂模块
打破未处理的错误

我发现这比弹出选项对话框要容易得多......