概述
开发时对于源代码程序,如果没有加错误处理,在出错时会提示错误消息,并可以中断代码,自动进入代码界面并定位到出错的代码行,非常方便。但该功能对于分发给最终用户使用的运行版本,不再会有任何提示。
而如果加了错误处理,在运行版本中也会有提示,但是在开发时的源代码版本中,出错时自动中断并定位出错代码的功能又没有了。
对于该问题,平台从 2.5.0 版推出一个可以兼顾两者的错误处理代码方案:使用特定的错误处理代码,显示错误消息后,自动判断当前是否可以查看及编辑源代码,如果可以,则自动中断以进行调试。
常规错误处理代码:
Public Sub Test() On Error Goto ErrorHandler '具体事务处理代码略 ExitHere: Exit Sub ErrorHandler: MsgBox Err.Description, vbCritical, "Error #" & Err.Number Resume ExitHere End Sub
自动中断进行调试的错误处理代码:
Public Sub Test() On Error Goto ErrorHandler '具体事务处理代码略 ExitHere: Exit Sub ErrorHandler: 'RDPErrorHandler 函数中已经包含了通过 MsgBox 显示错误消息的功能。 If RDPErrorHandler("Test 子过程") Then Resume '如果可以代码是可以查看及编辑的,则恢复(跳转)到出错的代码行。 Else Resume ExitHere '如果代码不可查看及编辑,则恢复(跳转)到 ExitHere 标签处,即退出子过程。 End If End Sub
演示示例
-
这里我们以用户管理中的删除功能进行演示。先故意制造一个错误,在删除按钮的事件过程代码中,将 Username 改成 Username2。
-
运行后窗体,点击删除按钮,会出现错误消息框。
-
代码会自动中断于 Debug.Assert False 语句处。
-
按 3 次 F8 键,即单步执行 3 次,会自动定位到 Resume 语句处,注意这里,这是一个标志位置。
-
再按 1 次 F8 键,会自动定位到出错的代码所在行,检查并修改出错的语句后,可以按 F5 继续运行。
修订记录
- 2019-07-08 2.5.0 加入