当前位置:文档之家› VB程序调试与错误处理初步

VB程序调试与错误处理初步


/webnew/
第14章 VB程序调试与错误处理初步 14章 VB程序调试与错误处理初步
14.1 14.2 14.3 14.4 14.5
错误的种类 错误处理 代码调试 小结 思考与练习
/webnew/
/webnew/
14.2 错 误 处 理
14.2.1 错误捕获 14.2.2 激活错误捕获功能 14.2.3 编制错误处理程序
/webnew/
14.2.1 错误捕获
当程序中的某行代码试图执行一项非法的操作时,将产生运行时 错误(Run-Time Error)。例如,当我们的程序需要打开某个特定的文件 时,如果这个文件被误删了,就会产生运行时错误“file not found”(文 件未找到),如下图所示。
/webnew/
14.1.2 运行错误
运行错误是指在运行程序的时候发生的错误。这些错误在编写的过 程中,因为它们符合语法规则,所以不会被识别出来,也不会在编译的 时候被发现。它们往往是由于进行了某种错误的操作造成的。 例如,下面一段代码: Private Sub Command1_Click() Dim number As Integer Dim total As Double Dim aver As Double total = Val(Text1.Text) number = Val(Text2.Text) aver = total / number Text3.Text = aver End Sub
/webnew/
14.2.2 激活错误捕获功能
这是一个典型的错误处理过程。首先,我们可以预料到在此过程中有可 能 出 现 运 行 时 错 误 , 因 此 , 在 过 程 开 始 时 , 我 们 使 用 On Error GoTo notready激活错误捕获功能,并指定从行号“notready”开始的程序段为错误 处理程序(注意,行号后面要加一个冒号,但在语句On Error GoTo notready 中不加冒号)。这样,当程序运行到语句“ChDrive ”A“”并发生错误时,将 执行行号“notready”后面的语句。如果不发生错误,当执行到语句“Exit Sub”时,将退出过程。在过程退出时,错误捕获功能就自动被取消了。 2. On Error Resume Next 此语句的功能是忽略错误,继续往下执行。使用这种格式的语句,它 可以激活错误捕获功能,但并不指定错误处理程序,当错误发生时,不做 任何处理,紧接着从发生错误语句之后的语句继续执行。
/webnew/
14.2 错 误 处 理
对于程序中可能出现的错误都要进行处理,否则会使应用程序崩溃。但 是,有的错误是用户无法避免的。例如,当光驱中没有光盘时,用户访问 了光驱,这时,系统会产生一个“设备没有准备好”的错误。 在Visual Basic中,允许使用错误处理方法来对可能出现的错误进行预先 处理。所谓错误处理,就是提供发生错误时执行的代码,也相当于是程序 运行的一部分。当一个错误发生的时候,应用程序应该可以探测到这一个 错误,并且进行相应的错误处理。用户应当在可能产生错误的地方放置错 误探测语句,同时,在同一个程序中放置错误的处理代码。通常含有错误 的探测捕捉和处理 设置错误的捕捉陷阱,即在程序中可能出现错误的地方放置捕捉语句来捕 获产生错误的语句。 编写错误处理程序,即当程序中出现错误的时候,程序将运行用户指定的 程序。 退出错误处理程序,即在处理错误之后,应该恢复原来的一些参数,然后 让程序继续正常地运行下去。
这段程序的功能是拷贝“A”盘中的“readme.txt”文件到“D”盘。假设 当前驱动器是“C”盘,如果在执行语句“ChDrive ”A“”时出错,就忽略此 项操作,继续留在“C”盘。并将“C”盘当前目录下的“Readme.txt”文件 拷贝到“D”盘,如果在“FileCopy ”readme.txt“, ”d:\read.txt“”语句再出现错 误,那么干脆什么都不做自动退出此过程。 3. On Error Goto 0 此语句用来关闭错误捕获功能。当用户确定已经没有错误产生或者错 误已经得到处理,就可以关闭错误捕获功能。要注意,错误捕获功能一旦 被激活,将保持到过程结束,如果我们要在过程结束之前就关闭此功能, 应使用“On Error Goto 0”捕获功能
在我们捕获运行时错误之前,首先要激活错误捕获功能,这项任 务是由On Error语句来完成的。On Error语句共有3种格式。 1. On Error Goto 行号 此语句的功能是激活错误捕获,并将错误处理程序指定为从“行 号” 位置开始的程序段。 例如: Private Sub Form_Load() Dim r As VbMsgBoxResult On Error GoTo notready ChDrive "A" Exit Sub notready: r = MsgBox(" 请 插 入 软 盘 !", vbRetryCancel + vbCritical, "缺少软盘") If r = vbRetry Then Resume End Sub
/webnew/
14.2.3 编制错误处理程序
Visual Basic中的常见错误码及其描述如下表所示。
错误码 5 6 7 9 10 11 13 错误信息 无效的过程调用或参数 溢出 内存溢出 数组下标越界 数组长度固定或者临时被锁定 除数为0 类型不匹配 错误码 18 35 52 53 55 61 68 错误信息 出现用户中断 过程或者函数未定义 错误的文件名 找不到指定的文件 文件已经被打开 磁盘已满 设备没有准备好
/webnew/
14.2.3 编制错误处理程序
在捕获到运行时错误后,接下来就是要执行错误处理程 序。在错误处理程序中,我们要针对错误的类型,向用户提 供解决的方法,然后根据用户的选择,进行相应的处理。 在Visual Basic中,每当产生错误的时候,都会将当前错 误的编号和描述存储在Err对象中。因此,我们可以通过这 个对象来判断当前产生的是什么错误。Err对象是一个具有 全局范围的固有对象,用户不必在程序中重新定义它。 Err对象最常用的属性是Number属性和Description属性。 Number属性存储当前错误的编号,Description属性存储当前 错误的描述。
/webnew/
14.1.1 语法错误
由于我们不小心将语句:For j=1 To 100书写成 For j=1 100(漏掉了To),则当用户按下Enter键的时 候,Visual Basic就会立刻测出这样的错误,会提示 用户“缺少To”,如下图所示。
再如,当我们的程序要从软盘中读取文件时,如果软驱中 没有软盘,就会产生运行时错误“Disk not ready”(磁盘没有准 备好)。
/webnew/
14.2.1 错误捕获
通过这些例子可以看出,运行时错误是无法避 免的。但是,一旦出现运行时错误,将造成程序崩 溃。因此,我们必须对可能发生的错误进行处理。 许多运行时的错误只能靠用户来解决,比如插入 软盘。因此,我们必须在系统发出错误之前,截获 错误,在错误处理程序中提示用户采取措施,是解 决问题还是取消操作。如果用户解决了问题(如插 入了软盘),我们的程序就能够继续执行,如果用 户选择取消操作,我们就可以跳过这段程序,而继 续执行后面的程序。 这就是处理运行时错误的方法,我们将这个过 程称为错误捕获(Error Trapping)。
/webnew/
14.2.3 编制错误处理程序
Number属性的出现为错误的几种处理提供了很好的方法。 根据用户不同的选择,返回的位置有所不同,如果用户解决 了问题,并选择重试,就应该返回到产生错误的语句重新执行, 如果用户选择取消操作,就应该跳过产生错误的语句,返回到它 的下一行语句继续执行。 从错误处理程序中返回时,我们使用Resume语句。根据不同 的返回位置,Resume语句可分为3种: Resume 0:返回到产生错误的语句重新执行。“0”可以省略。 Resume Next:跳过产生错误的语句,返回到它的下一行语句继 续执行。 Resume 行号:返回到行号指定的位置继续执行。
14.1 错误的种类
14.1.1 语法错误 14.1.2 运行错误 14.1.3 逻辑错误
/webnew/
14.1.1 语法错误
语法错误是存在于代码中的语言结构方面的错误。比 如,拼写错误、缺少操作对象、不符合语法规则等错误都 属于语法错误。 例如,我们要输入下列代码: Private Sub Form_Load() Dim i As Integer Dim j As Integer Dim sum As Integer sum = 0 For i = 1 To 100 For j=1 100 …… End Sub
/webnew/
14.1.3 逻辑错误
逻辑错误指的是程序可以执行,但就是得不到用 户所希望的结果。这并不是程序语句的错误,而是 由于程序设计时本身存在的逻辑缺陷而导致的。如 定义了错误的变量类型,或程序中出现了不正确的 循环次数或死循环等等。 大多数逻辑错误不容易发觉是在哪一条语句发生 的,而且错误产生的原因与产生错误结果的语句之 间可能隔有很多语句。因此,对于逻辑错误一般要 使用单步执行和监视的方法来查找错误的根源。
/webnew/
例如,如下一段代码: Private Sub Form_Load() On Error Resume Next ChDrive "A" FileCopy "readme.txt", "d:\read.txt" End Sub
14.2.2 激活错误捕获功能
第14章 VB程序调试与错误处理初步 14章 VB程序调试与错误处理初步
可选内容(时间:2次课,4学时)
/webnew/
第14章 VB程序调试与错误处理初步 14章 VB程序调试与错误处理初步 教学提示: 本章主要介绍VB 的程序调试技术, VB的程序调试技术 教学提示 : 本章主要介绍 VB 的程序调试技术 , 其 中包括VB VB编程过程中常见的错误类型的产生和表 中包括 VB 编程过程中常见的错误类型的产生和表 以及利用VB VB提供的调试工具和语句对程序错 现 , 以及利用 VB 提供的调试工具和语句对程序错 误进行捕获、 处理和修改的方法。 VB为广大用户 误进行捕获 、 处理和修改的方法 。 VB 为广大用户 提供了功能强大的程序调试工具, 提供了功能强大的程序调试工具 , 使用户能够迅 速排除编程中出现的问题。 速排除编程中出现的问题。 本章主要介绍: VB程序 错误的种类、 错误处理的 本章主要介绍 : VB 程序错误的种类 、 程序 错误的种类 方法以及程序代码调试的方法。 方法以及程序代码调试的方法。
相关主题