如何在VB6中重新启用默认错误处理
我在一些地方有一些带有各种“On Error Goto”错误处理程序的代码来处理一些破坏的第三方硬件.我在没有错误陷阱的例程中遇到溢出错误(从Err变量中读取)但是由例程调用.我一直认为错误陷阱只在它们被声明的例程中有效,但看起来子例程中的错误可能导致它转到调用函数的错误陷阱.
所以我关闭了调用函数的错误陷阱,发现我的溢出,一切都很好.但在我这样做之前,我花了一些时间试图找到一种编程方式让VB恢复到该例程中的默认错误处理(所以我不必修改外部代码来调试),但我不能.我能找到的唯一错误命令: On Error GoTo [label] On Error Resume Next On Error Goto 0 On Error GoTo -1 所有打开手动错误处理 – 有没有办法关闭它(回到VB6默认)?
在
Error Handling Hierarchy的VB6手册中对此进行了详细说明.在错误转到0时,禁用当前过程中的错误处理程序,而不是在调用它的过程中.
正如其他人所说,您可以转到“工具 – 选项 – 常规”选项卡,然后选择“中断所有错误”.这有效地禁用了所有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的讨论也值得一看. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |