分享

如何用ON ERROR调试程序——全视网在线教程频道编程数据栏目

 悟静 2009-06-21
如何用 ON ERROR 来调试应用程序 FoxPro 提供了 ON ERROR 命令来允许编程者捕捉应用程序中出现的特定错误. 本文说明如何使用一个错误捕捉例程保存有关的调试信息到一个 FoxPro 表中. 本文中的代码捕捉出现在 FoxPro 应用程序中的错误并保存以下信息到一个表中: · 错误出现的计算机名. · 错误号. · 错误信息. · 如果源代码可用, 发生错误的源代码. · 发生错误的程序. · 发生错误的行号. · 错误发生时最近选定的表. · 错误的日期和时间. 应用程序中的错误的语法和逻辑会产生许多可捕捉错误. 有些出现在应用程序中的错误在被最终用户测试前是不可知的. 当默认的 FoxPro 错误信息显示对于程序员来说是有用的信息时, 它的出现可能会使最终用户糊涂. 同样, 当应用程序执行时, 最终用户通常很少有时间小心的注意并报告错误的出现. 在没有人提供错误报告时, 这些代码也有助于检验断断续续出现的错误的原因.
用以下代码创建一个叫做 Errutil.prg 和程序.
ON ERROR DO errhand IN errutil ; WITH SYS(0), ERROR(), MESSAGE(), MESSAGE(1), ; PROGRAM(), LINENO(1), DBF(), DATE(), TIME() * 错误捕捉设置结束.
PROCEDURE errhand PARAMETER m.machine, m.messgnum, m.messg, m.linecode, ; m.callprog, m.inline, m.OPENTABL, m.errdate, ; m.errtime m.errspace=SELECT() && 保存当前工作区.
 m.errorder=ORDER() && 保存当前排序.
IF LEN(ALLTRIM(m.callprog))=0 m.callprog="Command Line" STORE SPACE(0) TO m.linecode ENDIF outmsgline="错误 ; "+m.messg+CHR(13)+"行号 "+STR(m.inline)+ ; CHR(13)+ ; "程序名 = "+m.callprog+CHR(13)+"语法 :"+m.linecode * Visual FoxPro 用户使用 =MESSAGEBOX(outmsgline,32+0) * FoxPro For Windows 用户使用 Foxtools.fll 中的 MsgBox() 函数 WAIT WINDOW outmsgline TIMEOUT 5 && 所有版本均可使用该语法.
 IF !USED("ERRORLOG") IF FILE("ERRORLOG.DBF") SELECT 0 USE errorlog ELSE SELECT 0 thisversion=VERSION() IF LEFT(ALLTRIM(thisversion),6)="Visual" * 为 Visual FoxPro 版本创建一个自由表
CREATE TABLE errorlog FREE (machine c(20), messgnum N(4,0), ; messg c(70), linecode c(70), callprog c(40), ; inline N(6,0), OPENTABL c(25), errdate d, errtime c(8)) ELSE CREATE TABLE errorlog (machine c(20), messgnum N(4,0), ; messg c(70), linecode c(70), callprog c(40), ; inline N(6,0), OPENTABL c(25), errdate d, errtime c(8)) ENDIF ENDIF ENDIF INSERT INTO errorlog FROM MEMVAR SELECT errorlog && 选择 errorlog 表. USE && 关闭 errorlog 表. SELECT (m.errspace)   && 返回到保存的工作区.
 IF !EMPTY(ALIAS()) SET ORDER TO (m.errorder) ENDIF RELEASE ALL LIKE m.messgnum, m.messg, m.linecode, m.callprog, ; m.inline RETURN 用以下代码创建一个名为 Ztest.prg 的程序: DO errutil && 激活 Errutil.prg 中的 ON ERROR 例程. USE c:\noexist.dbf && 因为该文件尚不存在因此会发生错误 DO C:\noexist.prg ON ERROR && 关闭活动的 ON ERROR 例程. 在 Visual FoxPro 命令窗口中打入以下命令: Do ZTest.prg. 两个 Wait 窗口显示出不愉快的错误代码行. 这些信息被放入 Errorlog.dbf 文件中. 5 秒钟后窗口消失. 激活命令窗口, 然后打开并浏览 Errorlog 表.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多