VB错误类型及中断调试

Author: 张颖淳 Date: 1998年 第39期 03版

  在编制程序时,“错误”几乎是不可避免的。可以通过调试来消除导致程序崩溃或工作不正常的错误代码。
#1  一、错误类型:
  概括起来,在VB编程中主要有三种类型的错误:(1)语法错误,(2)运行错误,(3)逻辑错误。
  语法错误(Syntax errors)是指不符合VB语法规范的错误。主要原因是错误地键入了语句、遗漏了自变量、错误地使用了变量类型等。VB通过解释程序来查找这类错误。当发现错误时解释程序立即显示一个对话框,指出错误内容。
  运行错误(Runtime errors)发生在错误地使用了数据的时候,例如用零作为分数的分母。这些错误只有在程序运行且计算到该值时才会被发现。产生运行错误时,程序显示一个对话框,列出错误号及其简要说明,每个运行错误都有一个错误号或错误代码,以便于区分和识别。
  逻辑错误(Logical errors)是程序具体逻辑的错误,而不是代码本身的错误。逻辑错误发生时,程序还在执行,表面上没有问题,但结果却不对。定位逻辑错误并消除该错误需要运用调试者的所有知识及经验。
#1  二、中断调试
  VB的主要调试工具有:Debug窗口;在直接交互区检查和修改变量值;用快速监视功能检查变量值;在监视区中检查变量值等。下面介绍设置中断来调试错误。
  当程序运行出错、停止执行并显示带有错误信息的对话框时,称该程序处于中断方式(Break Mode)。中断方式仅仅是程序执行的暂停,并不清除所有变量的值,所有变量均保持它们在程序进入中断方式点的值。可以通过以下几种途径把运行中的程序置于中断方式:按Ctrl+Break键;执行到一个断点;执行到一个监视点;插入Debug.Print语句等。
  在VB编程中,把程序置于中断方式的最简单方法是按Ctrl+Break键,然后调试程序。继续执行处于中断方式的程序可通过选择主菜单上“运行”下的“继续” 菜单选项(或按F5键),重新执行程序则选择“重新启动” 菜单选项(或按Shift+F5键),选择“结束” 菜单项则退出程序执行。
  断点(Breakpoints)是放在程序中的标记(markers),程序执行到断点时,自动进入中断方式。断点的特点是:增加和删除断点不需要结束程序的执行,并且,断点不随程序存盘,而是在退出程序时自动消失。要在程序中设置断点,应先选中需要程序暂停的语句,再选择主菜单上“调试”下的“切换断点”菜单选项(或按F9键),要取消程序中断点的操作与设置断点的操作一样。可以通过设置断点把程序的执行点移到程序中出问题的附近,然后在有问题的代码块内仔细地单步运行,同时检查变量的值,从而找出问题的根源。
  监视点是由一个监视表达式和一个断点组成。监视点监视一个变量和表达式的值,当某个特定的变化发生时在程序中触发一个监视点中断。触发一个监视点中断的两种选择是:表达式的值为真或表达式的值发生任何变化。在程序中插入一个监视点的方法为:选择主菜单上“调试”下的“添加监视” 菜单项,在弹出的对话框中输入表达式,并可以选择监视类型。
  有时要在程序的运行中监视一个或几个变量的值,可以在程序中插入Debug.Print语句,该语句在Debug窗口的直接交互区中打印监视变量的数值,从而不需要在程序的每一步执行时中断程序并检查数值。
  最后需要补充说明的是,在调试检查程序错误时,在程序代码块内可通过错误自陷方法,运用错误处理器来防止程序运行的中途退出和死机现象。当程序运行出错时,VB错误处理器被启动,它停止程序的运行,并显示Macro Error对话框,可以通过该对话框操纵程序的执行。典型的错误自陷如下所示:
Private Sub ErrorRaise()
  On Error GOTO ErrHand         
                 '打开错误自陷开关
    ……         '子程序语句块
  Exit Sub
 ErrHand:       '错误处理器开始 
   ……         '错误处理器语句块
   Resume        '错误处理器结束
End Sub