什么是处理VB6中的错误的更好方法

RBS*_*RBS 15 vb6 error-handling

我有VB6应用程序,我想在其中放入一些好的错误处理功能,它可以告诉我错误是什么,确切地点发生时,有人可以建议这样做的好方法

Kri*_*son 29

首先,获取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}"
Run Code Online (Sandbox Code Playgroud)

然后创建一个LogError函数,将错误记录到光盘.接下来,在您发布代码之前,为每个函数添加行号(这也包含在MZTools中).从现在开始,您将从错误日志中了解发生的所有事情.如果可能,还要上传错误日志并实际从现场检查它们.

这是关于VB6中的意外全局错误处理(其中许多缺陷之一)所能做的最好的事情,实际上这应该仅用于查找意外错误.如果您知道如果在某种情况下可能发生错误,您应该捕获该特定错误并处理它.如果您知道某个部分中发生的错误将导致不稳定(文件IO,内存问题等)警告用户并且知道您处于"未知状态"并且"坏事"可能会发生.显然使用友好的术语来保持用户的信息,但不要害怕.


小智 12

没有附加模块的简单方法,对类模块很有用:

抢占每个函数/ subs:

On Error Goto Handler
Run Code Online (Sandbox Code Playgroud)

处理器/ bubbleup:

Handler:
  Err.Raise Err.Number, "(function_name)->" & Err.source, Err.Description
Run Code Online (Sandbox Code Playgroud)

瞧,贫民区堆栈痕迹.


Joe*_*ora 3

出错时转到

Err
Run Code Online (Sandbox Code Playgroud)

目的。

这里有一个教程。