vb调试与错误处理

上传人:206****923 文档编号:57133787 上传时间:2018-10-19 格式:PPT 页数:24 大小:278.50KB
返回 下载 相关 举报
vb调试与错误处理_第1页
第1页 / 共24页
vb调试与错误处理_第2页
第2页 / 共24页
vb调试与错误处理_第3页
第3页 / 共24页
vb调试与错误处理_第4页
第4页 / 共24页
vb调试与错误处理_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《vb调试与错误处理》由会员分享,可在线阅读,更多相关《vb调试与错误处理(24页珍藏版)》请在金锄头文库上搜索。

1、第 9章 调试与错误处理,主要内容:,Visual Basic 6.0的调试工具 程序运行中的常见错误种类 Visual Basic 6.0中的错误捕获和处理方法,9.1 程 序 调 试,9.1.1 任务一 Visual Basic调试工具,不管设计程序或编写代码时多么仔细,都不能完全避免错误的发生。有时错误会妨碍程序顺利启动,有时错误会导致程序停止运行或“崩溃”,还有些时候程序虽然可能会运行但无法给出预期的结果。,Visual Basic 6.0 的调试是在 Visual Basic IDE(集成开发环境)中进行的,它包含若干个特殊的命令和窗口以帮助用户查找错误。Visual Basic 6

2、.0提供的调试工具包括断点、临时表达式、单步运行等。可通过选择“调试”命令使用这些工具,也可以选择“视图”“工具栏”“调试”命令,弹出如图9-1所示的“调试”工具栏。,图9-1 “调试”工具栏,9.1.2 任务二 程序错误与调试示例,即使最资深的程序员也会犯错,因此,知道如何对应用程序进行调试并找出错误是编程的重要组成部分。但在学习有关调试过程的知识之前,了解错误类型对我们找出并修复错误是很有帮助的。 编程中可能出现的错误分为三类:编译错误、运行时错误和逻辑错误。,9.2 错误捕获与处理,虽然Visual Basic为用户提供了强大的调试工具帮助用户检查并验证应用程序,但是调试过的程序在实际的

3、运行中,还是会因为运行环境、资源使用等原因而出现错误。例如,在程序中需要对光盘文件进行操作,但是光驱中却没有光盘,这时候就会出现错误,需要对这个错误进行处理。,Visual Basic提供了一些用于错误处理的工具,包括对象、函数和语句等。使用这些工具进行错误处理的具体操作步骤如下: (1)记录错误的类型和原因。 (2)在引起错误的地方停止原定代码的执行,强制程序转入到用户自定义的“错误处理程序段”入口。 (3)在错误处理程序段内,根据具体的错误进行相应的处理。 (4)如果问题能够解决,则在问题解决之后返回原程序处继续往下执行,否则停止错误执行。,On Error语句,1On Error Got

4、oResume 结构 该语句的语法结构如下: On Error GoTo 可能出错的语句部分 Exit Sub(Function) 语句标号: 错误处理语句 Resume,2On Error GotoResume Next 结构 该语句的语法结构如下: On Error GoTo 可能出错的语句部分 Exit Sub(Function) 语句标号: 错误处理语句 Resume Next,9.3 程序调试案例,在Visual Basic 6.0中有两项调试技术,即设置“断点”和“单步执行”代码,可以帮助用户逐行检查代码以找出错误。用户可以在“代码编辑器”中为任何可执行代码行设置断点。当程序运行到

5、该代码行时,断点会强制程序停止并进入中断模式。此时便可及时获取我们想要了解的有关程序在该时间点的状态的任何信息。然后,可以检查任何变量的值,在“即时”窗口中测试表达式,或者使用“编辑并继续”功能修改代码。,下面以一个实例来看看这些调试工具的使用方法。 新建一个工程,该程序的功能是,用户在文本框中输入一个介于020之间的数字,程序能计算这个数的阶乘并返回结果。,按下面的步骤建立这个程序: (1)打开Microsoft Visual Basic 6.0中文版。 (2)在弹出的对话框中,选择“标准EXE”选项。 (3)单击工具栏中的Label标签控件,在Form1窗体上绘制一个标签,并将其Capti

6、on属性改为“请输入一个整数(020之间)”。,(4)单击工具栏中的Text控件,并在Form1窗体中绘制一个文本框,将其text属性设置为空。 (5)单击工具栏中的CommandButton按钮控件,在窗体中绘制一个控件,将其Caption属性设置为“计算阶乘”。 (6)单击工具栏中的Frame控件,并将其Caption属性设置为“观测信息”。 (7)最后单击Label控件,将两个标签放到Frame1中,将其Caption属性全部设置为空。,完成程序的编写后开始调试。首先,按【F5】键运行程序,在文本框中输入数字0,单击“计算阶乘”按钮,得到如图9-11所示的结果。0的阶乘为1,这个结果是正

7、确的。然后我们测试一下数字1的阶乘,得到如图9-12所示的结果,也是正确的。,图9-11 0的阶乘 图9-12 1的阶乘,打开代码窗口,在调用Check函数的地方设置断点,以便程序在检查参数之前中断运行,这样可以查看程序状态和中间结果。设置断点的具体操作步骤如下。 (1)在代码窗口中,把光标移动到要设置断点的那一行。 (2)选择“调试”“切换断点”命令或按【F9】键。这时所设断点处的语句会出现一个红色亮条,按【F5】键继续运行程序,在文本框中输入-1,单击“计算阶乘”按钮,这时程序在断点处中断。然后我们进行单步执行,以便跟踪检查这部分代码的运行情况。 选择“调试”“逐语句”命令或按【F8】键单

8、步执行程序。此时程序会转到Check函数中。每按一次【F8】键,程序就会往下执行一条语句。当程序执行到if语句(见图9-16)时,选择“视图”“立即窗口”命令,弹出立即窗口。在立即窗口中输入“?x”,表示需要观测Check函数中的变量x的值。此时立即窗口的使用效果如图9-17所示。这时候表示x接收到的值是-1。这说明程序接收到的参数是正确的,那么错误不在这里,可能在后面。,图9-16 单步执行IF语句 图9-17 立即窗口,继续按【F8】键单步执行。此时程序执行到Else语句处。这时发现程序出现了逻辑错误,很显然当用户输入的数字为-1时不应当执行Else语句的内容,而是应当执行“Label2.

9、Caption=”输入的数字必须介于020之间“”语句,提示用户输入范围有错。由此我们判断是if语句的条件设置有问题。仔细检查if语句的条件设置,我们发现“x 20 And x 20 Or x 0”。修改完程序后我们再次运行程序,程序运行结果如图9-18所示。表明参数检查函数Check已经能正常工作了。 关闭正在运行的程序并清除所有断点,然后再次启动程序的运行。在程序运行界面中的文本框中输入2,单击“计算阶乘”按钮,观测程序运行的结果,我们发现此时的结果是不正确的(如图9-19所示)。这说明阶乘计算函数中也存在逻辑错误。,图9-18 修改后的-1阶乘计算 图9-19 2的阶乘计算,关闭正在运行

10、的程序,选择“调试”“添加监视”命令,弹出“添加监视”对话框,按图9-20进行设置,单击“确定”按钮。再按【F5】键运行程序,在输入框重新输入2,单击“计算阶乘”按钮。程序会在调用Factotial函数处中断。 选择“视图”“调用堆栈”命令,弹出“调用堆栈”对话框,如图9-21所示,观察Factotial函数的递归调用是否存在问题。在“调用堆栈”对话框中显视了当前还未执行的函数和过程,这里显示了2个“工程1.Form1.Factotial”,说明Factotial函数在计算阶乘时的递归调用是正确的,再观察一下“监视”窗口,Factotial函数的返回值为1,也是正确的。,图9-20 “添加监视

11、”对话框 图9-21 “调用堆栈”对话框,在“调用堆栈”对话框中单击“关闭”按钮,关闭“调用堆栈”对话框,然后按【F5】键继续运行,这时候Factotial函数返回值改变,程序进入中断方式(见图9-22)。再打开“调用堆栈”窗口,Factotial函数的返回值为0,而实际应当为2,显然这时候发生了错误。,关闭“调用堆栈”窗口,结束程序的运行,仔细检查Factotial部分的代码,发现“Factorial = x * Factotial(x - 1)”代码部分有错误,将函数名“Factotial”错误的写成了“Factorial”。虽然是一个小小的拼写错误,却为我们增加了多少调试的工作!改正后再

12、次运行程序,输入数字5,单击“计算阶乘”按钮,这次我们观测程序结果,发现如图9-23所示的结果是正确的了,至此,本程序才算是完全正确的程序了。,本 章 小 结 当错误出现时,调试是解决问题的重要步骤和手段,而错误捕获和处理则是一种有效地避免程序出错的预防措施。本章主要讲述了Visual Basic 6.0环境下的调试工具及其功能,一些常用的错误捕获和处理语句。但是我们不应该把希望都寄托在程序调试和错误处理上,减少程序错误的根本方法是养成良好的编程习惯,如良好的变量声明方式、适当添加注释、进行模块化的编程等。希望读者在熟练掌握调试工具和方法的同时,加强对编程习惯的培养,养成良好的编程风格,这样才能使程序开发取得较高的效率。,图9-22 中断 图9-23 正确结果,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号