我有VB6应用程序,我想在其中放入一些好的错误处理功能,它可以告诉我错误是什么,确切地点发生时,有人可以建议这样做的好方法
首先,获取Visual Basic 6的MZTools,它是免费且无价的.第二,在每个函数上添加一个自定义错误处理程序(是的,每个函数).我们使用的错误处理程序看起来像这样:
On Error GoTo {PROCEDURE_NAME}_Error {PROCEDURE_BODY} On Error GoTo 0 Exit {PROCEDURE_TYPE} {PROCEDURE_NAME}_Error: LogError "Error " & Err.Number & " (" & Err.Description & ") in line " & Erl & _ ", in procedure {PROCEDURE_NAME} of {MODULE_TYPE} {MODULE_NAME}"
然后创建一个LogError函数,将错误记录到光盘.接下来,在您发布代码之前,为每个函数添加行号(这也包含在MZTools中).从现在开始,您将从错误日志中了解发生的所有事情.如果可能,还要上传错误日志并实际从现场检查它们.
这是关于VB6中的意外全局错误处理(其中许多缺陷之一)所能做的最好的事情,实际上这应该仅用于查找意外错误.如果您知道如果在某种情况下可能发生错误,您应该捕获该特定错误并处理它.如果您知道某个部分中发生的错误将导致不稳定(文件IO,内存问题等)警告用户并且知道您处于"未知状态"并且"坏事"可能会发生.显然使用友好的术语来保持用户的信息,但不要害怕.
没有附加模块的简单方法,对类模块很有用:
抢占每个函数/ subs:
On Error Goto Handler
处理器/ bubbleup:
Handler: Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description
瞧,贫民区堆栈痕迹.