所以我关闭了调用函数的错误陷阱,发现我的溢出,一切都很好.但在我这样做之前,我花了一些时间试图找到一种编程方式让VB恢复到该例程中的默认错误处理(所以我不必修改外部代码来调试),但我不能.我能找到的唯一错误命令:
On Error GoTo [label] On Error Resume Next On Error Goto 0 On Error GoTo -1
If an error occurs in a procedure and
this procedure doesn’t have an enabled
error handler,Visual Basic searches
backward through the pending
procedures in the calls list — and executes the first
enabled error handler it finds. If it
doesn’t encounter an enabled error
handler anywhere in the calls list,it
presents a default unexpected error
message and halts execution.
正如其他人所说,您可以转到“工具 – 选项 – 常规”选项卡,然后选择“中断所有错误”.这有效地禁用了所有On Error语句 – IDE会在每次错误时立即中断.
如果你的VB6代码在正常操作中抛出错误,这可能会令人恼火.例如,当您检查文件是否存在时,或者用户在常用对话框中按取消时.您不希望IDE每次都在这些行上中断.但是,您可能在所有事件处理过程中都有样板错误处理程序,以阻止程序因意外错误而崩溃.但是当你调试问题时它们会很麻烦,因为IDE不会因错误而中断.一个技巧是在IDE中运行时关闭这些错误处理程序,但将它们保留在构建的可执行文件中.你这样做.
将这些功能放入模块中.
Public Function InIDE() As Boolean Debug.Assert Not TestIDE(InIDE) End Function Private Function TestIDE(Test As Boolean) As Boolean Test = True End Function
然后你可以编写像这样的错误处理程序.
Private Sub Form_Load() If Not InIDE() Then On Error Goto PreventCrashes <lots of code> Exit Sub PreventCrashes: <report the error> End Sub
从here开始.另一个提示 – 使用免费的插件MZTools自动添加这些样板错误处理程序.对于生产质量代码,您可以更进一步,在每个例程中放置一个错误处理程序来创建ghetto stack trace.您还可以在每个错误处理程序中立即记录错误.
编辑:Ant已正确指出On Error Goto -1是VB.Net statement并且在VB6中无效.
编辑:Arvo和OneNerd已经写了一些有趣的讨论,模仿VB6错误处理中的最终拆卸块. this question的讨论也值得一看.