Version 3.0
Visual Programming in VB \ 1 of 30
程序调试和错误处理第 十章
2
回顾
分清不同文件的类型:
不同文件类型的结构
读取和写入顺序文件
使用 VB 的不同文件处理函数处理文件
在应用程序中使用 VB 的 MSFLEXGRID 控件
3
目标
解释不同的应用程序模式
在断点模式下调试应用程序
使用“立即”窗口和“监视”窗口跟踪变量
使用 DEBUG 语句调试应用程序
了解错误和不同的错误类型
处理不同类型的错误
4
调试应用程序
缺陷
– 程序中的错误
调试
– 找到和修复应用程序中的错误的过程
– Visual Basic 提供了几种工具,可用于找到错误的来源
5
应用程序的不同模式
Visual Basic 支持三种模式:
– 设计模式
– 运行时模式
– 中断模式查看 Visual Basic 环境标题栏就可以了解应用程序所处的当前模式
6
进入中断模式的方法
,
明确切换到中断模式的方法,Visual Basic 在下列情况下自动进入中断模式选择,运行,菜单选项的,中断
”菜单项目遇到断点单击,调试,工具栏上的,中断
”按钮发生运行时错误按下 <Ctrl+ Break> 组合键 监视表达式的值更改或变为真在程序中遇到 Stop 关键字
7
调试和断点
,断点,是一个用于标识 Visual Basic 程序内代码行的标记已标记断点的代码行以红色突出显示,且会在边界标识条中该代码行的相应位置处添加一个红点
8
设置断点
设置断点的方法:
– 在要添加断点的行旁边的边界标识条上单击
– 在要添加断点的行上按下 F9
– 从,调试,菜单选择,切换断点,选项;或者,
在代码窗口中单击鼠标右键,从显示的弹出菜单中选择,切换断点,
请演示以上操作
9
清除断点
通过从,调试,菜单中选择,清除所有断点,选项或按下 Ctrl-Shift-F9 组合键,可以将程序中设置的所有断点全部删除
退出 Visual Basic 环境时,会删除所有断点请演示以上操作
10
“调试,工具栏按钮
启动
中断
结束
切换断点
逐语句
逐过程
跳出
本地窗口
立即窗口
监视窗口
快速监视
调用堆栈
11
用于调试的单步执行语句
使用,逐语句,语句:
– 在,调试,菜单上,选择,
逐语句,选项
– 在,调试,工具栏上,选择
“逐语句,按钮
– 或者,按下功能键 <F8>
使用,逐过程,语句:
– 在,调试,菜单上,选择,
逐过程,选项
– 在,调试,工具栏上,选择,逐过程,按钮
– 按下功能组合键
<Shift + F8>
使用,跳出,语句,
从,调试,菜单或工具栏选择,跳出,选项按下组合键
<Ctrl + Shift + F8>
12
在中断模式中调试示例工程请在 VB环境中演示
13
调试窗口
立即窗口
– 显示因调试代码中的语句而产生的信息,
或者用户通过直接将代码行键入到窗口中而请求的信息
监视窗口
– 用于指定要在调试程序时监视的变量和表达式
本地窗口
– 用于显示当前过程中所有已声明的变量及它们的值
14
立即窗口请在 VB环境中演示
15
不同的监视窗口请在 VB环境中演示
16
本地窗口显示 sum
变量值的本地窗口请在 VB环境中演示
17
了解错误
缺省错误处理程序会向用户显示一条消息(其中包含错误编号和错误的简短描述),并终止应用程序
错误是通过在过程中使用错误处理代码进行处理的
处理运行时错误的代码称为,错误处理程序,
18
错误类型错误 说明语法错误 在输入了错误的代码行(如并键字输入错误、丢失标点符号或变量拼写错误)时,发生这类错误。
例如,如果使用 If 语句但却没有给出相应的 End
If,将导致方法错误,Vi sual Basic 会在用户离开代码行前通知语法错误。
运行时错误当命令试图执行无效命令时,发生这类错误例如,如果试图将一个字行串赋值给数值型变量,即发生运行时错误。只有在发生了运行时错误时,才会执行错误处理程序。
逻辑错误 当应用程序在执行时既没有语法错误,也没有运行时错误,但结果却不是预期的时,发生这 类错误。,
例如,某个应用程序可能会提示用户输入密码,但在用户输入了正确的密码后,却不允许用户访问该应用程序。
19
运行时错误 2-1
会生成运行时错误的操作:
– 写入不存在的文件
– 试图选择已关闭的某个表
– 将数字型变量赋值给字符串变量
– 两个用户保存同一记录
– 除数为零两个用户保存同一记录
20
运行时错误 2-2
Visual Basic 不支持集中式错误处理技术
每个过程或事件都需要一个错误处理程序来解决它自己的错误
创建错误处理程序的基本步骤:
– 启用错误处理程序
– 编写可以处理潜在错误的代码
– 继续执行程序
21
错误处理程序
错误处理程序处理运行时错误
在过程中使用带有标签名称的
On Error GoTo 语句,将启用一个错误处理程序
标签
– 标识代码中的某个点,遇到错误时,执行将转到该点
22
Err 对象
通知错误,并包含有关运行时错误的信息
可用于确定发生了什么错误,错误的描述,以及找到错误发生的位置
属性由产生错误的程序设置
错误可以由 Visual Basic 或程序员生成
发生运行时错误时,会使用唯一地标识该错误的信息,有关处理该错误所需的操作的信息填充 Err 对象的属性
23
Err 对象 - 属性 2-1
属性 说明
Number 返回或设置一个指定错误的数字值。 N u m ber 是对象的缺省属性。使用 mumber 属性可以确定发生了什么错误。此属性的值是一个对应于错误情况的唯一数字语法,O bject,N um ber
Descr ipt i on 返回或设置一个表达式,该表达式包含一个与错误相关联的描述性字符串,
语法,O bject,D escr ipt io n
24
Err 对象 - 属性 2-2
属性 说明
Source 返回或设置一个字符串,该字符串指定生成错误的应用程序的名称。代码中发生意料外的错误时,会自动设置 S ou r ce 属性语法,O bject.S ou rce
HelpF ile 返回或设置一个包括指向帮助文件的路径的字符串
Sy nt ax,Ob jec t,HelpF ile
HelpC ontext 返回或设置一个字符串,该字符串包括帮助文件中的主题的上下文 ID
语法,O bject,H elpContex t
25
继续执行语句 说明
Resume 应用程序在导致错误的代码行上恢复执行
Resume Next 应用程序从导致错误的代码行的下一行处恢复处理
Resume li ne 从行标签或行号指定的点处继续执行,
该点必须与错误处理程序位于同一个过程内。这个点是在 Res um e 语句的后部指定的
Resume 语句用于继续执行过程三个 resume 语句如下:
26
Err 对象 - 方法方法 说明
Clear 方法 在处理错误后,清除 Er r 对象的所有属性。使用 Resu me 语句,O n Er ror 语句,或者在用户退出 Su b 或 F un cti on 过程时,会自动调用此方法语法,O bject,Cl ear
Raise 方法 此方法用于生成错误。生成错误有助于进行测试和运算。生成错误是为了能让程序中其他位置的错误处理程序处理它语法,o bject,Raise nu m ber,sou rce,descr ipt io n,
helpf ile,helpc o nt ext
除 number 参数外,所有其他参数都是可选的
27
捕获错误要有效地处理错误,必须捕获程序中的错误。这称为错误捕获
Visual Basic 执行 On Error 语句时,会启用错误捕获,On
Error 指定一个错误处理程序捕获错误方法有两种:
立即处理
延迟处理
28
立即处理错误 2-1
此方法中,只要发生错误,程序就会转到某个错误处理 程序
On Error GoTo 语句指定错误处理 程序的位置
29
立即处理错误 2-2
错误解决后,会返回到引起错误的行或紧跟在错误代码后面的行处执行
需要在错误处理例程前使用一个语句以退出过程
Exit Sub
30
延迟错误处理 3-1
VB 在发生错误时忽略错误,但 是会在过程中稍后的代码中检查该错误
用于处理像,被零除,这样的错误
可以使用错误处理代码来重置变量的值
,以便能够继续处理
31
延迟错误处理 3-2
缺点:
– 在任何有可能发生错误的位置,都需要放置错误处理代码
– 发生新错误时,Err 对象不存储有关上一个错误的信息
使用 On Error Resume Next 语句调用
发生错误之后,提示 Visual Basic 继续执行程序
32
延迟错误处理 3-3
On Error Resume Next 指示将使用延迟处理
它还会调用 Clear 方法重置 Err 对象的属性,为可能发生的下一个错误做好准备
33
总结
应用程序的调试
– 应用程序开发的三种模式
– 程序中加入断点进行调试
– 在 VB中调试和修正错误
– 使用立即窗口和 DEBUG进行调试信息输出
错误处理
– 应用程序错误和错误类型
– 使用 ERR进行错误处理,ERR对象的属性和方法
– 错误处理关键词
– 错误处理的分类总结