【VB开源代码栏目提醒】:网学会员--在 VB开源代码编辑为广大网友搜集整理了:VB程序的调试方法及常见错误的捕获处理 - 其他考试资料绩等信息,祝愿广大网友取得需要的信息,参考学习。
哈 尔 滨 职 业 技 术 学 院 学 报 2 0 0 9 年 第 1 期 Journal of Harbin Institute of Vocational Technology ·113· VB程序的调试方法及常见错误的捕获处理 王向前 (平顶山学院, 河南 平顶山 467002) 摘 要:本文阐述了VB的常见错误类型、常用调试方法及错误捕获方法,并在此基础上给出了利用错误捕获技术进行处理时的实例。
关键词: 调试方法; 处理 错误捕获; 中图分类号:TP311.11 文献标识码:A 文章编号:1008 — 8970 —(2009)01 — 0113 — 02 Visual Basic(以下简称VB)是一种可视化的、 面向对象 待用户进行修改。
和采用事件驱动方式的结构化高级程序设计语言,可用于开 (四) 逻辑错误发Windows环境下的各类应用程序。
它简单易学、 〔1〕 效率高、 程序运行后, 在编译和运行时均不能发现错误,却不能功能强, 是
常用的编程语言之一。
得到所期望的结果, 这种情况一般是在程序设计中出现了 解决程序中出现的错误是每个程序员都有过的经历,每 逻辑错误。
这种错误,系统无法自动检测,也没有错误提示信个程序员都追求编写出一个安全、 可靠的应用程序。
但是在 息, 因此不容易判断和处理,只能通过对应用程序进行测试我们编写的程序中出现错误总是难免的,尽管我们总是很小 来验证结果的正确性。
在结构化程序设计过程中,情况 例如:心,也很难保证在自己编写的程序中没有一个错误, 因此,掌 语句如果使用不当就容易产生逻辑问题,如已知百分制成绩握程序的调试和测试是非常重要的。
很多
学习VB的同学因 mark,显示对应的五级制成绩,程序
代码如下:为没有掌握调试VB程序的方法,上机遇到问题时无从下手, Select Case mark甚至失去了学习的兴趣; 也有很多同学学完这门
课程后,参 Case Is >= 60加全国等级考试因为机试没有过关,纷纷败下阵来,主要原 Print”及格”因也是没有掌握VB程序的调试方法。
虽然调试程序的经验 Case Is >= 70不是一朝一夕能成就的,但也是有一定的方法可循的,本文 Print”中”将就VB程序中易出现的错误及处理方法进行了探讨和分 Case Is >= 80析。
Print”良好” 一、 Vb程序中的错误类型 Case Is >= 90 (一) 编辑时错误 Print”优秀” 当用户在
代码窗口编辑
代码时, VB会对程序直接进行 Case Else语法检查, 当发现程序中存在的错误, 例如, 语句没输入完、 Print”不及格”关键字输入错等, VB会弹出一个对话框, 提示出错信息。
〔3〕 End Select这时, 用户必须单击 “确定” 按钮, 关闭出错提示对话框, 出错 上面
代码中在语法上没有错误,但是由于是情况语句,的那一行变成红色, 出错部分被高亮度显示, 提示用户进行 当它们满足其中一个条件时就不再判断是否还满足其他条修改。
例如, 用户在输入 “s=a/b*”表达式时没输入完, 就按了 件,所以上面例子不管成绩是75分还是95分,输出的结果都回车键,
系统就会显示出错信息, 提醒用户改正。
是及格,因此结果是错误的。
这种错误隐蔽得较深,所以编程 (二) 编译时错误 时要格外注意用一切可能的数据进行测试。
编译错误指单击了 “启动” 按钮, VB开始运行程序前, 先 在VB程序经常出现的以上四种错误中,编译错误是存编译执行的程序段产生的错误。
此类错误是由于用户未定 在于
代码中的语言结构方面的错误,这方面的错误比较容易义变量、 遗漏关键字等原因而产生的。
这时, 〔2〕 VB会弹出一 克服。
这是因为VB的
代码窗口具有自动检查语法的功能,对个窗口,提示出错信息,出错的那一行被高亮度显示,同时VB 于存在于单行
代码的语法错误,VB会在输入
代码的同时发停止编译。
这时,必须单击 “确定” 按钮,关闭出错提示窗,然后 现它们并予以提示, 这样就可以及时改正错误,不必等到最对出错行进行修改。
后编译时再一个一个改正,而且也可以避免发生更严重的错 (三) 运行时错误 误。
运行时错误和逻辑错误都无法在VB编译时发现,必须对 运行错误指VB在编译通过后, 运行程序
代码时发生的 这两种错误进行特殊处理。
处理运行时错误的方法是捕获,错误。
这类错误往往是由指令
代码执行一个非法操作而引 查找运行时错误和逻辑错误的方法是调试。
起的。
例如,执行x=sin(x)/(20 mod 2),求x的值时,由于20 mod 二、 VB程序的调试方法2的值为0, 所以进行除法运算时分母为零, 从而导致出错。
这 (一) 逐语句跟踪类错误在运行时出现,也会弹出一个窗口,提示出错信息, 等 为了跟踪程序的执行流程,可以单步运行程序,也就是〔收稿日期〕2008-08-03 (1978-) 女,〔作者简介〕王向前 硕士, , 平顶山学院师范教育学院讲师,
计算机应用。
研究方向: ·114· 哈 尔 滨 职 业 技 术 学 院 学 报 2 0 0 9 年 第 1 期 Journal of Harbin Institute of Vocational Technology 让程序每执行一步就停下来,从而可以监视变量和表达式的 能由On Error语句实现,On Error语句有以下三种形式。
〔4〕 变化情况,判断程序运行至此的正误。
可用下列三种方法之 1. On Error GoTo Line语句 一实现逐语句执行: 选择 第一, “调试” 菜单中的 “逐语句” 命 该语句用于启动错误处理程序, 且程序需从必要的 单击 令;第二, “调试工具条” “逐语句” 中的 按钮;第三, 按 “line” 参数中指定的位置开始。
”line”参数可为任何行标 F8键。
此操作是一条一条语句的执行程序。
当遇到过程调 或行号。
如发生运行时错误, 即出现了可捕获的错误时, 用时,即进入该过程继续单步执行,此操作根据程序控制 则程序会跳转至”line”处并激活错误处理程序。
需注意, 指 决定下一个要执行的语句,故遇到循环、 条件、 分支等复合 定的 “line”参数必须和OnError语句在一个过程中, 否则会 语句时,被逐语句执行的语句序列需要在运行中确定。
可 发生编译错误。
以依此来判断程序执行的流程是否正确。
由于逐语句执 2. On Error Rusume Next 行跟踪了程序的控制流程,便于观察If、 Select Case和循环 此语句的功能是忽略错误,继续往下执行。
它激活错误 语句等处的程序状态或条件判断结果,因此,对发现程序 捕获功能,但并不指定错误处理
程序。
当发生错误时,不做任 中的逻辑错误很有帮助。
何处理,直接执行产生错误的下一行程序。
(二) 插入断点 3. On Error Go to 0 单步执行可观察到每个语句执行后的程序状态,另一种 此语句用来强制性取消捕获功能。
错误捕获功能一旦 高效的调试手段是在程序中设置断点,当程序执行到断点 被激活,就停止程序的执行。
处, 程序的执行被暂停,程序的运行状态被保存起来,这时的 (二)编写错误处理程序 程序处于中断状态。
此时,可通过查看各种变量和表达式的 编写错误处理程序, 首先是添加行号。
这个行号标志着 值,来判断前面部分程序的执行是否符合用户意图。
实际上, 错误处理程序的开始。
行号是一个字符串, 并且在它后面要 单步执行是一类自动设置断点的执行方法。
加上冒号, 接着编写错误处理程序。
通常错误处理程序放在 可以通过设置断点,来指定程序执行到哪一行时中断。
过程的末端, 而且在紧靠行号的前方放有Exit Sub或Exit 在一段程序中,可以有多个断点。
将光标放置在希望设置断 Function等语句, 这样在未出现错误的情况下, 避免执行错 点的行,然后执行下列操作之一就可在相应语句前设置一个 误处理
代码。
断点: 选择 一是, “调试” 菜单中的“切换断点” 命令;二是, 单 如: 可以在正常语句中故意产生一个错误, 隐性改变程 击调试工具条中的 “切换断点” 按钮;三是, 按F9键。
在程序运 序流程, 达到错误处理的目的, 程序
代码如下。
行到断点语句处停下, 进入中断模式, 在此之前所关心的变 Private Sub Commandl_Click() 量、属性、 表达式的值都可以看到。
On Error GoTo error 将设置断点和逐语句跟踪相结合, 是初学者调试程序 A=1 / Val(Textl.Text) 最简捷的方法。
MsgBox “你输入了非零值” (三) 查看变量 Exit Sub 调试最基本的手段就是在中断状态下通过查看变量或 Error: 表达式的值,来分析程序出错的原因。
VB提供了三种窗口用 Select Case Err.Number 于此目的,分别是本地窗口、 立即窗口和监视窗口。
可以在 ‘ “0” Cax 11 被 除的错误
代码是11’“调试” 菜单中选择这三个窗口。
“ MsgBox 你输入了零值或非数值字符” 1.本地窗口 End Select 本地窗口是用来显示当前过程中所有的过程级变量和 End Sub 当前模块中所有的模块级变量值的,在单步执行时,从本地 从以上
代码中可以发现, 在程序运行时, 如果在文本框 窗口可观察这些变量的值的变化。
中输入非 数值, “0” 经Va1( )函数取值后仍是非零值, 程序正 2.立即窗口 常执行;若在文本框中输入 数值或者字母, “0” 经Va1( )函数 本地窗口可以监视当前过程中的过程级变量和当前模 取值后就是零值, 在a=1 / Val(Textl.Text)语句中就会产生一 块中的模块级变量, 但对于程序中表达式或全局变量来说, “0” 个被 除的错误, 程序跳到error处执行, 从而达到错误处理 就无能为力了,立即窗口可以立即显示任何变量或表达式的 的目的。
值。
立即窗口是功能最为全面的调试窗口。
通过立即窗口,我 (三) 退出处理程序 们可查看变量或表达式当前的值、 修改变量或属性的值,以 当指定的错误处理完成后, 应该指引程序跳转到合适 及执行一小段程序等。
的位置继续执行。
在V B中Resume语句是用于退出处理程序 3.监视窗口 的, Resume语句有以下三种用法: 一是, 〔5〕 Resume 0 返回到 我们可以通过监视窗口来监视指定的变量或表达式的 产生错误的语句重新执行,通常省略 。
“0”二是, Resume Next 值,在监视窗口中, 我们可看到每个被监视的表达式的当前 跳过产生错误的语句,返回到它的下一行语句继续执行。
三 值、数据类型和所属范围。
是, Rusume行号返回到行号指定的位置继续执行。
三、 VB程序错误捕获方法 〔参考文献〕 程序调试的方法,可帮助程序员找出许多错误, 但程序 ( Steven Holzner, 〔1〕 美) 详实译.Visual Basic 6技术内幕 运行中的错误一旦出现将造成程序崩溃,无法继续执行。
因 〔M〕.北京: 机械工业出版社, 1999. 此必须对可能发生的运行时错误加以处理。
也就是在系统 〔2〕龚沛曾.Visual Basic 6.0程序
设计简明教程〔M〕.北京: 发出警告之前截获该错误,在错误处理程序中提示用户采取 高等教育出版社,2006. 行动,是解决
问题还是取消操作。
如果用户解决了问题, 程序 〔3〕林伟健,周霭如.Visual Basic程序设计实验指导与习 就能够继续执行,如果用户选择取消操作, 就可以跳出这段 题解答〔M〕.北京:电子工业出版社,2003. 程序, 继续执行后面的程序。
这就是处理运行时错误的方法, 〔4〕刘军,张琳.Visual Basic程序设计教程〔M〕.成都:电子 这个过程称为错误捕获。
出现运行错误可通过以下步骤处 科技大学出版社,2004. 理。
〔5〕佟伟光.Visual Basic6.0程序设计教程(第2版)〔M〕.北 (一) 激活错误捕获 京: 电子工业出版社, 2005. 在捕获运行错误之前,首先要激活错误捕获功能。
此功 (责任编辑: 张 晗).