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

上传人:sh****n 文档编号:6438249 上传时间:2020-02-25 格式:PPT 页数:36 大小:1.13MB
返回 下载 相关 举报
VB程序调试与错误处理初步.ppt_第1页
第1页 / 共36页
VB程序调试与错误处理初步.ppt_第2页
第2页 / 共36页
VB程序调试与错误处理初步.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
第14章VB程序调试与错误处理初步 可选内容 时间 2次课 4学时 第14章VB程序调试与错误处理初步 教学提示 本章主要介绍VB的程序调试技术 其中包括VB编程过程中常见的错误类型的产生和表现 以及利用VB提供的调试工具和语句对程序错误进行捕获 处理和修改的方法 VB为广大用户提供了功能强大的程序调试工具 使用户能够迅速排除编程中出现的问题 本章主要介绍 VB程序错误的种类 错误处理的方法以及程序代码调试的方法 第14章VB程序调试与错误处理初步 14 1错误的种类14 2错误处理14 3代码调试14 4小结14 5思考与练习 14 1错误的种类 14 1 1语法错误14 1 2运行错误14 1 3逻辑错误 14 1 1语法错误 语法错误是存在于代码中的语言结构方面的错误 比如 拼写错误 缺少操作对象 不符合语法规则等错误都属于语法错误 例如 我们要输入下列代码 PrivateSubForm Load DimiAsIntegerDimjAsIntegerDimsumAsIntegersum 0Fori 1To100Forj 1100 EndSub 14 1 1语法错误 由于我们不小心将语句 Forj 1To100书写成Forj 1100 漏掉了To 则当用户按下Enter键的时候 VisualBasic就会立刻测出这样的错误 会提示用户 缺少To 如下图所示 14 1 2运行错误 运行错误是指在运行程序的时候发生的错误 这些错误在编写的过程中 因为它们符合语法规则 所以不会被识别出来 也不会在编译的时候被发现 它们往往是由于进行了某种错误的操作造成的 例如 下面一段代码 PrivateSubCommand1 Click DimnumberAsIntegerDimtotalAsDoubleDimaverAsDoubletotal Val Text1 Text number Val Text2 Text aver total numberText3 Text averEndSub 14 1 2运行错误 该程序在计算平均值时 很有可能在没有提供参数number 或者提供了不合法的值 则会产生除数为0的错误 从而引起程序的崩溃 如下图所示 这时 用户可以单击 结束 按钮来结束程序 也可以单击 调试 按钮来发现是哪一条语句发生了错误 以便于修改 14 1 3逻辑错误 逻辑错误指的是程序可以执行 但就是得不到用户所希望的结果 这并不是程序语句的错误 而是由于程序设计时本身存在的逻辑缺陷而导致的 如定义了错误的变量类型 或程序中出现了不正确的循环次数或死循环等等 大多数逻辑错误不容易发觉是在哪一条语句发生的 而且错误产生的原因与产生错误结果的语句之间可能隔有很多语句 因此 对于逻辑错误一般要使用单步执行和监视的方法来查找错误的根源 14 2错误处理 对于程序中可能出现的错误都要进行处理 否则会使应用程序崩溃 但是 有的错误是用户无法避免的 例如 当光驱中没有光盘时 用户访问了光驱 这时 系统会产生一个 设备没有准备好 的错误 在VisualBasic中 允许使用错误处理方法来对可能出现的错误进行预先处理 所谓错误处理 就是提供发生错误时执行的代码 也相当于是程序运行的一部分 当一个错误发生的时候 应用程序应该可以探测到这一个错误 并且进行相应的错误处理 用户应当在可能产生错误的地方放置错误探测语句 同时 在同一个程序中放置错误的处理代码 通常含有错误的探测捕捉和处理设置错误的捕捉陷阱 即在程序中可能出现错误的地方放置捕捉语句来捕获产生错误的语句 编写错误处理程序 即当程序中出现错误的时候 程序将运行用户指定的程序 退出错误处理程序 即在处理错误之后 应该恢复原来的一些参数 然后让程序继续正常地运行下去 14 2错误处理 14 2 1错误捕获14 2 2激活错误捕获功能14 2 3编制错误处理程序 14 2 1错误捕获 当程序中的某行代码试图执行一项非法的操作时 将产生运行时错误 Run TimeError 例如 当我们的程序需要打开某个特定的文件时 如果这个文件被误删了 就会产生运行时错误 filenotfound 文件未找到 如下图所示 再如 当我们的程序要从软盘中读取文件时 如果软驱中没有软盘 就会产生运行时错误 Disknotready 磁盘没有准备好 14 2 1错误捕获 通过这些例子可以看出 运行时错误是无法避免的 但是 一旦出现运行时错误 将造成程序崩溃 因此 我们必须对可能发生的错误进行处理 许多运行时的错误只能靠用户来解决 比如插入软盘 因此 我们必须在系统发出错误之前 截获错误 在错误处理程序中提示用户采取措施 是解决问题还是取消操作 如果用户解决了问题 如插入了软盘 我们的程序就能够继续执行 如果用户选择取消操作 我们就可以跳过这段程序 而继续执行后面的程序 这就是处理运行时错误的方法 我们将这个过程称为错误捕获 ErrorTrapping 14 2 2激活错误捕获功能 在我们捕获运行时错误之前 首先要激活错误捕获功能 这项任务是由OnError语句来完成的 OnError语句共有3种格式 OnErrorGoto行号此语句的功能是激活错误捕获 并将错误处理程序指定为从 行号 位置开始的程序段 例如 PrivateSubForm Load DimrAsVbMsgBoxResultOnErrorGoTonotreadyChDrive A ExitSubnotready r MsgBox 请插入软盘 vbRetryCancel vbCritical 缺少软盘 Ifr vbRetryThenResumeEndSub 14 2 2激活错误捕获功能 这是一个典型的错误处理过程 首先 我们可以预料到在此过程中有可能出现运行时错误 因此 在过程开始时 我们使用OnErrorGoTonotready激活错误捕获功能 并指定从行号 notready 开始的程序段为错误处理程序 注意 行号后面要加一个冒号 但在语句OnErrorGoTonotready中不加冒号 这样 当程序运行到语句 ChDrive A 并发生错误时 将执行行号 notready 后面的语句 如果不发生错误 当执行到语句 ExitSub 时 将退出过程 在过程退出时 错误捕获功能就自动被取消了 2 OnErrorResumeNext此语句的功能是忽略错误 继续往下执行 使用这种格式的语句 它可以激活错误捕获功能 但并不指定错误处理程序 当错误发生时 不做任何处理 紧接着从发生错误语句之后的语句继续执行 14 2 2激活错误捕获功能 例如 如下一段代码 PrivateSubForm Load OnErrorResumeNextChDrive A FileCopy readme txt d read txt EndSub这段程序的功能是拷贝 A 盘中的 readme txt 文件到 D 盘 假设当前驱动器是 C 盘 如果在执行语句 ChDrive A 时出错 就忽略此项操作 继续留在 C 盘 并将 C 盘当前目录下的 Readme txt 文件拷贝到 D 盘 如果在 FileCopy readme txt d read txt 语句再出现错误 那么干脆什么都不做自动退出此过程 3 OnErrorGoto0此语句用来关闭错误捕获功能 当用户确定已经没有错误产生或者错误已经得到处理 就可以关闭错误捕获功能 要注意 错误捕获功能一旦被激活 将保持到过程结束 如果我们要在过程结束之前就关闭此功能 应使用 OnErrorGoto0 语句 14 2 3编制错误处理程序 在捕获到运行时错误后 接下来就是要执行错误处理程序 在错误处理程序中 我们要针对错误的类型 向用户提供解决的方法 然后根据用户的选择 进行相应的处理 在VisualBasic中 每当产生错误的时候 都会将当前错误的编号和描述存储在Err对象中 因此 我们可以通过这个对象来判断当前产生的是什么错误 Err对象是一个具有全局范围的固有对象 用户不必在程序中重新定义它 Err对象最常用的属性是Number属性和Description属性 Number属性存储当前错误的编号 Description属性存储当前错误的描述 14 2 3编制错误处理程序 VisualBasic中的常见错误码及其描述如下表所示 14 2 3编制错误处理程序 Number属性的出现为错误的几种处理提供了很好的方法 根据用户不同的选择 返回的位置有所不同 如果用户解决了问题 并选择重试 就应该返回到产生错误的语句重新执行 如果用户选择取消操作 就应该跳过产生错误的语句 返回到它的下一行语句继续执行 从错误处理程序中返回时 我们使用Resume语句 根据不同的返回位置 Resume语句可分为3种 Resume0 返回到产生错误的语句重新执行 0 可以省略 ResumeNext 跳过产生错误的语句 返回到它的下一行语句继续执行 Resume行号 返回到行号指定的位置继续执行 14 2 3编制错误处理程序 下面我们来看一个例子 PrivateSubForm Load DimrAsVbMsgBoxResultOnErrorGoToehChDrive A FileCopy readme txt d readme txt ExitSubeh SelectCaseErr NumberCase71r MsgBox 请插入软盘 vbRetryCancel vbCritical 缺少软盘 Ifr vbRetryThenResumeElseResumeNextEndIfCase53r MsgBox 找不到文件 请将文件恢复后重试 vbRetryCancel vbCritical 缺少文件 Ifr vbRetryThenResumeEndSelectEndSub 14 2 3编制错误处理程序 我们通常使用SelectCase语句来判断错误的类型 在这个例子中 磁盘没有准备好 是71号错误 找不到文件 是53号错误 对于不同的错误类型 程序将向用户提示不同的信息 在这个例子中 对于 磁盘没有准备好 的错误 程序将向用户提示插入软盘 当用户单击 重试 按钮时 程序使用Resume语句返回到产生错误的行 ChDrive A 如果这时用户已经插入软盘 这行语句将不会再产生错误 因此程序将继续执行 如果用户单击 取消 按钮 程序将使用ResumeNext语句返回到产生错误的下一行 FileCopy readme txt d readme txt 继续执行 14 3代码调试 有时 程序中不存在语法错误或运行时错误 也没有执行非法操作的语句 但是程序运行的结果却是不正确的 我们称这种错误为逻辑错误 例如 使用了错误的公式或局部变量与全局变量混用了等 程序运行时对于逻辑错误并没有任何的提示 我们只能深入到程序的内部 一步步地执行程序 观察程序的执行过程 从而找出隐藏在程序中的逻辑或运行时错误 我们将这个过程称为调试 调试是一种查找错误的手段 而不是处理或改正错误的手段 VisualBasic为用户提供了功能强大的调试工具 对于错误程序的更正有很大的帮助 而且可以跟踪程序的执行过程 调试工具包含 设置断点 单步执行 显示变量内容 等 下面 我们就来学习一下 如何利用VisualBasic为用户提供的调试工具来调试程序 首先 单击 视图 菜单中的 工具栏 命令 打开 调试 工具栏 如下图所示 14 3代码调试 14 3代码调试 14 3 1中断程序的执行14 3 2跟踪操作 14 3 1中断程序的执行 中断程序的执行是指当程序运行到某一行语句时 就进入中断状态 不再继续执行 这样我们就可以在中断状态下调试程序 常用的方法是通过设置断点来实现 下面我们来看看有关断点的操作 1 设置断点将插入点放在要设置断点的行 然后使用下述操作之一便可为该行设置断点 选择 调试 菜单中的 切换断点 命令 单击调试工具栏中的按钮 按F9键 14 3 1中断程序的执行 为某一行设置了断点后 该行代码将以红底白字显示 并在边界指示条中出现一个红色的圆圈 表示这一行代码已被设置了断点 如图14 5所示 2 清除断点对已设置断点的行 再执行和上面相同的操作便可清除断点 3 清除所有断点选择 调试 菜单中的 清除所有断点 命令 或按 Ctrl Shift F9 键 14 3 2跟踪操作 14 3 2跟踪操作 2 逐过程执行此项操作单步执行代码 如果碰到过程调用 则不进入该过程 也就是说 将过程调用看作一行语句来执行 逐过程执行代码有下面3种方法 选择 调试 菜单中的 逐过程 命令 单击调试工具栏中的按钮 按Shift F8键 3 跳出过程此项操作将当前过程中执行点后面的语句全部执行 并将下一执行点定位在调用该过程的语句的下一行 跳出过程有下面3种方法 选择 调试 菜单中的 跳出 命令 单击调试工具栏中的按钮 按Ctrl Shift F8键 14 3 2跟踪操作 提示 如果在执行点后面的语句中存在断点 那么跳出过程命令将使程序执行到下一断点 也就是说 断点的级别要高于跳出过程命令 VisualBasic的程序调试技术和错误处理技术是相当完善的 本章只是简单地介绍了程序调试和错误处理的初步知识 目的是为了让用户掌握调试程序的基本方法 并养成良好的编程习惯 为日后的学习和工作打下良好的基础 14 4小结 14 4小结 1 常见的错误有 语法错误 运行时错误 和 逻辑错误 2 语法错误是存在于代码中的语言结构方面的错误 运行错误是指在运行程序的时候发生的错误 而逻辑错误则不同 它指的是程序可以执行 但就是得不到用户所希望的结果 这是由于程序设计时本身存在的逻辑缺陷而导致的 3 所谓错误处理 就是提供发生错误时执行的代码 通常包含有错误的探测捕捉和处理 即设置错误的捕捉陷阱 编写错误处理程序和退出错误处理程序 4 所谓错误捕获就是我们必须在系统发出错误之前 截获错误 在错误处理程序中提示用户采取措施 是解决问题还是取消操作 激活错误捕获功能一般有3种格式 OnErrorGoto行号 OnErrorResumeNext OnErrorGoto0 14 4小结 5 在编制错误处理程序中 我们要针对错误的类型 向用户提供解决的方法 然后根据用户的选择 进行相应的处理 一般我们可以利用Err对象的Number属性和Description属性的值编制错误处理程序 6 VisualBasic为用户提供了功能强大的调试工具 利用它可以跟踪程序的执行过程 包含 设置断点 单步执行 显示变量内容 等等 14 5思考与练习 1 选择题 1 当语句不符合文法规则时 出现错误 A 逻辑错误B 运行时期错误C 语法错误D 以上都不对 2 下列陈述中正确的有 中断点只能在设计过程中设置 B 中断点只能在执行过程中设置 C 中断点可以在设计过程中设置 也可以在执行过程中设置 D 中断点可以在设计过程中设置 也可以在执行过程或中断过程中设置 3 下列属性中 属于Err对象的有 A NumberB CaptionC DescriptionD Text 14 5思考与练习 2 判断题 1 在VB集成环境中只有运行程序才能发现程序错误 2 设置错误的捕捉陷阱 指在程序中可能出现错误的地方放置捕捉语句来捕获产生错误的语句 OnErrorResumeNext语句的功能是忽略错误 继续往下执行 3 填空题 1 设置断点快捷键是 2 VB单步执行的热键是 3 错误码为11表示发生的错误是 14 5思考与练习 4 操作题 1 编写一段程序 如果出现数组下标越界或除数为零错误时 则给出错误的描述 2 编写一段程序 要求能够对下列代码中的错误进行捕捉处理 Fori 1To10Forj 1To10a i j 100 i j NextjNexti 3 编写向软盘拷贝文件的程序 要求使用错误捕捉的方法 对当软盘不存在 或存储空间已满的异常情况进行处理 Q A Thanks
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!