程序调试与错误处理PPT_第1页
程序调试与错误处理PPT_第2页
程序调试与错误处理PPT_第3页
程序调试与错误处理PPT_第4页
程序调试与错误处理PPT_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章 错误处理 程序调试 与 1 程序调试的主要任务 查找程序的错误和排除错误本章主要内容VB程序中的错误类型程序工作模式程序调试错误处理 第9章程序调试与错误处理 2 三类错误类型 编译错误 逻辑错误和运行错误1 编译错误编译错误是指在程序编译过程中出现的错误 通常是由于不正确书写代码而产生的 例如 关键字写错 遗漏标点符号 括号不匹配等 较为容易排除 VB提供了自动语法检查功能 能指出并显示这些错误 帮助用户纠正语法错误 例子 Foort 1To100 9 1VB程序中的错误类型 3 2 运行错误运行时的错误是指应用程序在运行期间执行了非法操作所发生的错误 例如 除法运算中除数为零 访问文件时文件夹或文件找不到等 这种错误只有在程序运行时才能被发现 举例 下标越界 PrivateSubForm Load DimD 20 AsInteger kAsIntegerFork 1To30D k k KNextkEndSub 4 3 逻辑错误逻辑错误使程序运行时得不到预期的结果 这种程序没有语法错误 也能运行 但却得不到正确的结果 例如 在一个算术表达式中 把乘号 写成了加号 条件语句的条件写错 循环次数计算错误等例如 要求10 若采用 PrivateSubForm Load DimtAsIntegerFori 1To10t t iNextiShow PrinttEndSub运行程序时输出的结果是0通常 调试程序过程中所花的大部分时间和精力都在逻辑错误上 5 三种工作模式 设计模式 运行模式和中断模式1 设计模式在设计模式下 可以建立应用程序的用户界面 设置控件的属性 编写程序代码等2 运行模式在运行模式下 可以测试程序的运行结果 可以与应用程序对话 还可以查看程序代码 但不能修改程序3 中断模式在中断模式下 可以利用各种调试手段检查或更改某些变量或表达式的值 或者在断点附近单步执行程序 以便发现错误或改正错误 9 2程序工作模式 6 进入中断模式的方法 1 在代码中插入Stop语句 2 在代码窗口中设置断点 用菜单命令 3 在代码窗口中设置断点 鼠标操作 4 在程序运行时强制 中断 5 当程序运行出现错误 当检查调试通过后 需要清除断点 7 8 程序调试一般包括静态检查和动态检查9 3 1静态检查与动态检查静态检查程序的基本方法是逐行逐句地读程序 弄清楚每条语句的作用 预见每条语句和模块的执行结果 判断是否与预期结果相一致 这就是静态检查 也称人工检查 静态检查无误后 就可以进行更有效的动态检查 通过上机调试来发现错误称为动态检查 动态检查的基本方法是输入一组典型的数据来运行程序 程序对这些数据处理结果应是已知的 通过运行后实际结果和预想结果相比较 可以判断程序的正确性 9 3程序调试 9 例如 为了检验求解一元二次方程ax2 bx c 0的程序 见第四章例4 14 是否正确 我们可以输入以下四组a b c的数值 第一组 0 1 1预期结果 显示 不是二次方程 第二组 1 2 1预期结果 x1 1 x2 1 两个相等实根 第三组 1 1 2预期结果 x1 1 x2 2 两个不等实根 第四组 1 2 2预期结果 x1 1 i x2 1 i 两个共轭复根 动态检查中 通常在一些敏感点处设置断点 检查一些变量或表达式的值 10 使用 调试 菜单或 调试 工具栏1 切换断点 切换断点 按钮用来设置断点2 逐语句VB允许逐条语句执行程序 每执行一条语句后就返回中断模式 如果执行的是过程调用的代码 如Call 逐语句 操作也会跟踪到被调过程中继续一条语句一条语句的执行3 逐过程逐过程执行是以整个函数或过程为一个整体 一次执行 逐过程与逐语句一样 能够一条语句一条语句地执行代码 把被调用的函数或过程当作一个语句来看待 9 3 2使用VB调试工具 11 4 跳出单击 调试 工具栏上的 跳出 按钮 则VB将连续执行完该过程的其余部分 返回调用过程的下一条语句并回复中断模式5 本地窗口显示当前过程中所有变量和活动窗体的所有属性值Me代表当前窗体 单击 号或 号6 立即窗口可以检查某个属性或者变量的值 也可以对表达式求值 或为变量或属性赋值等7 监视窗口对用户定义的表达式进行监视 12 例9 1运行以下的窗体装载事件过程 PrivateSubForm Load Dima a 5 a 5 4c 1 a a EndSub运行时出错 消息框提示发生 除数为零 的错误 单击消息框中的 调试 按钮 即可进入中断模式 VB在代码窗口中用箭头指示发生错误的语句 C 1 a a 在立即窗口中键入以下命令来检查变量的值 a a 是Print的简写出错前变量a的当前值为整数5 而不是5 4 故发生了 除数为零 的错误 13 编写的程序代码如下 PrivateSubForm Load ShowDimtAsSingle iAsSinglet 0Fori 0 1To1Step0 1t t iNextiPrint 总和 tEndSub运行结果为 总和 4 5这不是正确的答案 正确结果应是5 5 例9 2计算t 0 1 0 2 0 3 0 9 1 14 利用调试工具来查找出错原因 操作步骤如下 1 在代码窗口中设置断点 为了了解循环过程中变量i和t的变化情况 可在语句t t i处设置断点 15 2 重新运行程序 程序在断点处中断运行 进入中断模式 16 3 单击 调试 工具栏上的 本地窗口 按钮 利用本地窗口来监视过程中各量及属性值的变化情况 17 4 单击 调试 工具栏上的 逐语句 按钮 让程序单步执行 本地窗口 会显示出程序中所用变量的当前值 5 连续单击 逐语句 按钮 使程序在For语句循环执行9次 此时本地窗口显示的变量值如图9 7所示 18 6 再次单击 逐语句 按钮 程序不再继续循环 而是退出循环 去执行Nexti下一个的Print语句 可以发现上述循环语句只是循环9次 本来应该循环10次 但由于小数点在机器内存储和处理会发生微小误差 当执行到第9次循环时 循环变量i的值为0 9000001 再加上步长值0 1时 已经超过1 往下就不再执行循环体了 所以实际上才循环9次 即只计算0 1 0 2 0 3 0 9 4 5 当步长值为小数时 为了防止丢失循环次数 可将终值适当增加 一般是加上步长值的一半 例如 Fori 0 1To1 05Step0 1调试程序往往比写程序更难 19 由于应用环境等的改变 有时程序还会出现错误 例如文件未找到等 这类 运行时错误 并非致命的错误 对于这些可预见的错误 可以利用VB的错误处理程序捕获它 对其进行适当的处理 并使程序继续执行 这样就能够使开发的软件具有更强的适应性 9 4 1错误处理的步骤 1 利用Err对象记录错误的类型 出错原因等 2 强制转移到用户自编的 错误处理程序段 的入口 3 在 错误处理程序段 内 根据具体错误进行处理 如果问题有解决方法 则在处理后返回原程序某处继续执行 否则 停止程序执行 9 4错误处理 20 Err对象是全局性的固有对象 用来保存最新的运行时错误信息 其属性由错误生成者设置1 主要属性 1 Number属性 为数值类型 范围为0 65535 保存错误号 2 Source属性 为字符串 指明错误产生的对象或应用程序的名称 3 Description属性 为字符串 用于记录简短的错误信息描述 2 常用方法 1 Clear方法 用于清除Err对象的当前属性值 2 Raise方法 产生错误 用于调试错误处理程序段 例如 执行语句Err Raise55将产生55号运行时错误 即 文件已打开 错误 9 4 2Err对象 21 使用OnError语句可以捕获错误 其语法格式如下 OnError标号通常 该语句放置在过程的开始位置 在程序运行过程中 当该语句后面的代码出错时 则程序就会自动跳转到标号所指定的程序行去运行标号所指示的程序行通常为错误处理程序段的开始行一个使用错误处理的示例 OnErrorGoToErrLine 以后出错时转移至ErrLine ErrLine 标号 Resume 返回语句 9 4 3捕获错误语句 OnError 22 当指定的错误处理完成后 应该控制程序返回到合适的位置继续执行 返回语句Resume有三种用法 1 Resume 0 程序返回到出错语句处继续执行 2 ResumeNext 程序返回到出错语句的下一语句 3 Resume标号 程序返回到标号处继续执行 9 4 4退出错误处理语句 Resume 23 输入某个数 求该数的平方根 当用户输入负数时 使用OnError Resume进行处理PrivateSubForm Load DimxAsSingle yAsSingle iAsStringOnErrorGoToerrln 以下出错时转移到errlnShow i i为实数标记x Val InputBox 请输入一个数 y Sqr x Printy i ExitSub 显示及退出过程errln 标号IfErr Number 5Then 本错误的错误码为5x x 转换为正数i i 复数标记Resume 返回Else 其他错误处理MsgBox 错误发生在 Err Source 代码为 Err Number 即 Err Description EndEnd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论