【教学课件】第11章程序调试和出错处理.ppt
《【教学课件】第11章程序调试和出错处理.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第11章程序调试和出错处理.ppt(50页珍藏版)》请在三一办公上搜索。
1、第11章 程序调试和出错处理,11.1 错误类型 11.2 调试和排错 11.3 出错处理 习题十一,11.1 错 误 类 型,1语法错误 当编写代码时,Visual Basic会对程序进行语法检查,当发现程序中存在打字错误、遗漏关键字或标点符号使用不当等语法错误时,Visual Basic在Form窗口中弹出一个子窗口,提示出错信息,出错的那一行变成红色,出错部分被高亮度显示,这时,用户必须单击“确定”按钮,关闭出错提示窗,然后对出错行进行修改。,2编译错误 编译错误指Visual Basic在编译应用程序时,由于用户未定义变量、遗漏关键字等原因产生的不正确的代码而引起的错误。这时,Visu
2、al Basic也弹出一个子窗口,提示出错信息,出错的那一行被高亮度显示,同时Visual Basic停止编译。这时,用户必须单击“确定”按钮,关闭出错提示窗,然后对出错行进行修改。,3运行错误 运行错误指Visual Basic在运行代码时发生的错误,这类错误往往是指令代码执行了一非法操作引起的。例如,除法时分母为零。有时,即使调用Visual Basic或Windows系统提供的标准系统函数或过程,也会发生错误。例如,当调用Visual Basic的Dir$()函数判断一个文件是否存在时,若被操作的驱动器未准备好或磁盘读写有错,就会发生错误。运行错误也将弹出一个子窗口,提示出错信息。窗口内
3、第一行显示运行错误代号,第二行显示出错说明。在窗口的下方给出4个按钮,分别是“继续”、“结束”、“调试”和“帮助”,这时,可选择一个按钮决定如何处理错误。,(1)选择“帮助”按钮,Visual Basic将提供这一错误的帮助信息,包括错误说明、错误代号和引起该错误的可能原因,用户可参考提示排除错误。(2)选择“调试”按钮,进入调试窗,光标停留在引起出错的那一句上,此时允许修改代码。(3)选择“结束”按钮,结束本程序的运行。,4逻辑错误 程序运行后,得不到所期望的结果,这说明程序存在逻辑错误。这类错误往往是程序存在逻辑上的缺陷所引起的。例如,使用了不正确的变量类型或指令的次序不对。又如,循环中起
4、终值不正确。逻辑错误也可以产生运行错误。通常,逻辑错误不会产生错误提示信息,故错误较难排除,需要程序员仔细地阅读分析程序。,11.2 调 试 和 排 错,11.2.1 调试窗口 在逐行运行应用程序的语句时,可用调试窗口监视表达式和变量的值。有三个调试窗口,它们是“立即”窗口、“监视”窗口和“本地”窗口。可单击视图菜单中的对应命令打开这些窗口。(1)“立即”窗口显示代码中正在调试的语句所产生的信息,或直接往窗口中键入的命令所请求的信息。例如,使用Print语句打印表达式的值,也可以在程序代码中利用Debug.Print方法把输出送到“立即”窗口。,(2)“本地”窗口显示当前过程中所有变量的值。当
5、程序的执行从一个过程切换到另一个过程时,“本地”窗口的内容会发生改变,它只反映当前过程中可用的变量。(3)“监视”窗口显示当前的监视表达式,在代码运行过程中可决定是否监控这些表达式的值。中断表达式是一个监视表达式,当定义的某个条件为真时,它将使Visual Basic进入中断模式。在“监视”窗口中,“上下文”列指出过程、模块,每个监视表达式都在这些过程或模块中进行计算。只有当前语句在指定的上下文中时,“监视”窗口才能显示监视表达式的值。否则,“值”列只显示一条消息,指出语句不在上下文中,“类型”列指明表达式类型,监视窗内列的宽度可用鼠标拖曳列之间的分界线来调整。,Visual Basic自动对
6、监视表达式进行监视。当应用程序进入中断模式后,这些监视表达式会出现在“监视”窗口中,可在此处观察它们的值。无论何时,只要表达式的值改变或等于一个特定的值,就可把应用程序设置为中断模式来直接观察表达式。例如,在循环计数器达到一个特定值时,可用一个监视表达式把应用程序设置为中断模式,而不是一次一条语句地逐步执行数十次乃至数百次循环。在过程中一个标志的值每次改变时都可能会希望应用程序进入中断模式。,有两种方法可在调试窗口添加监视表达式。(1)通过添加监视命令添加监视表达式的步骤如下:单击调试菜单中的添加监视命令,进入“添加监视”对话窗。在“表达式”框中,输入想要求值的表达式(也可预先用鼠标在程序中标
7、记某一表达式,它将自动填入表达式框中)。在“上下文”框中选取相应的过程或模块。,在“监视类型”框中选取一个选项按钮,决定Visual Basic如何响应观察表达式。如果选取“监视表达式”按钮,则观察表达式的值;若选取“当监视值为真时中断”按钮,只要程序使该表达式取值为真时即中断程序执行;若选取“当监视值改变时中断”按钮,只要程序使该表达式的值发生改变,就中断程序执行。当上述操作完成,点击“确认”按钮,关闭“添加监视”对话窗。,(2)通过快速监视对话框添加监视表达式的步骤如下:在调试窗口的代码段中选取要观察的表达式。单击调试菜单中的快速监视命令或工具条中的快速监视按钮,或从快捷菜单中选取快速监视
8、命令,进入“快速监视”对话窗,“上下文”框中显示相应的过程或模块,“表达式”框中显示表达式,“值”框中显示对应表达式的值。点击“添加”按钮。为了能在调试窗口内查看程序内变量、属性和语句的值,可使用中断模式。中断模式可使程序执行暂停,提供一个查看当前程序情况的机会。在中断模式下,变量和属性设置被保存,这样就可在调试窗口内查看程序内变量、属性和语句的值。进入中断模式可通过逐条语句、断点、Stop语句、键盘交互和观察表达式去发现错误,程序的运行错误也产生中断。,11.2.2 逐语句或逐过程运行 Visual Basic提供逐语句或逐过程两种方式分步运行一个程序。逐语句执行应用程序代码的下一个可执行行
9、,并跟踪到过程中。逐过程执行应用程序代码的下一个可执行行,但不跟踪到过程中。可以联用这两种方式,先用逐语句逐行检查,然后用逐过程跳过已检查过的运行正常的过程。逐语句或逐过程意味着逐行运行程序且检查每条命令。在每行命令运行后,查看程序做了什么。逐行运行和查看程序所用的数据,可以发现程序中所有的错误。如果你不知道错误所在,就必须逐行检查程序的每条命令。按F8或从“调试”菜单中选择“逐语句”或“逐过程”命令可进入指定的运行跟踪方式。如果要停止运行,从“运行”菜单中选择“结束”命令或单击工具栏中的“结束”按钮。,11.2.3 设置断点 对于大程序使用单步运行将令人生厌,可通过设置断点来跳过能正常运行的
10、程序。断点是告诉Visual Basic挂起程序执行的一个标记,当程序执行到断点处即暂停程序的运行,进入中断模式,此时可在调试窗口内查看程序内变量、属性和语句的值。断点可设在怀疑存在问题的地方,断点信号是临时的,不和程序代码存储在一起。可在中断模式下或设计时设置或删除断点,当应用程序处于空闲时,也可在运行时设置或删除断点。,设置或删除断点的步骤:(1)在程序需要设置断点处,将光标停留在该命令行上。(2)按F9键或选择“调试”莱单的“切换断点”命令,或单击工具条的“切换断点”按钮。设置了断点后,Visual Basic将以粗体形式突出显示选定的行,所用颜色为“选项”对话框的“编辑器格式”选项卡上
11、所指定的颜色(默认红色),该对话框可从“工具”菜单中获得。使用同样的方法,可清除当前程序行已设置的断点信号。如果选择“调试”菜单中的“清除所有断点”命令,可同时清除程序中所设置的全部断点。,应用程序一旦运行到断点处并被中止执行,就可检查应用程序的当前状态。检查应用程序的结果是很容易的,因为可以在应用程序的窗体和模块、“代码”窗口以及调试窗口之间移动焦点。由于在执行含有断点的行之前,这个断点中止执行应用程序,因此,如果要观察设有断点的行在运行时发生了什么,就必须至少再运行一个语句,为此要使用逐语句或逐过程运行。,11.3 出 错 处 理,当应用程序处在Visual Basic环境下运行时,如果发
12、生运行错误,Visual Basic将中止应用程序的执行,并退回到Visual Basic环境,程序设计者可通过调试工具纠正错误,并继续运行该程序。但当应用程序处在Windows系统环境下执行时(即以.exe文件启动执行),一旦发生错误,Windows将终止应用程序的执行,并从内存中清除该应用程序的代码,将控制权归还给Windows系统。,显然,Visual Basic这种错误的处理方式不尽合理。调试工具的使用只能用于清除程序代码中存在的错误,无法处理运行过程中发生的非程序语法或语义的错误,幸而Visual Basic提供了一系列运行错误处理的方法和函数。所谓错误处理,就是允许编写的应用程序对
13、错误进行响应。当一个错误发生时,程序能捕捉到这一错误,并可按程序设计者事先设计的方法来处理这一错误。常规下通过以下步骤在应用程序中增加指令捕捉和处理运行错误:(1)设置错误陷阱。在程序适当的地方加入一些语句来捕捉错误,一旦错误发生,程序的运行将转移到错误处理程序,根据所捕获到的错误代码告诉应用程序应当怎样操作。,(2)编写错误处理程序。当程序中出现运行错误时,程序的运行将转到错误处理程序,错误处理程序根据可预知的错误类型决定采取何种措施。Visual Basic提供On Error语句设置错误陷阱,捕捉错误。On Error语句有如下三种形式。On Error Resume Next:当发生错
14、误时,忽略错误行,继续执行下一语句;On Error GoTo语句标号:当发生错误时,使程序转跳到语句标号所指示的程序块;On Error GoTo 0:表示当发生错误时,不使用错误处理程序块;这里的GoTo 0并不指第0行,即使程序过程中有第0行。,当On Error捕捉到错误后,Err对象的Number属性指示对应错误号。于是在错误处理程序块中可使用“Select Case Err.Number”或“If Err.Number=”语句编写出错处理。指令Resume可单独使用,它具有重新执行的能力,提供了退出错误处理程序方法。Resume语句有如下三种形式。Resume:重新执行引起错误的语
15、句或指令;Resume Next:当发生错误时,忽略错误行继续执行下一语句;Resume:当发生错误时,忽略错误行,并转跳到由指明的语句继续执行;若为0,则表示终止程序执行。,【例11-1】下列程序要打开A驱动器上的testfile文件。由于是对A盘操作,就可能存在A盘未准备好或文件不存在的错误。为避免这些错误中止应用程序的执行,可在程序块中设置错误陷阱,当发生错误时,错误处理程序块根据捕捉到的出错号处理出错。Sub OnErrorStatementDemo()Dim Response,Msg,Style,Tille As String 以下语句行设置错误陷阱,当发生错误时跳转到 由标号Err
16、orHandler指明的错误处理程序块On Error GoTo ErrorHandlerOpen A:testfile For Output As#1Exit Sub 正常退出本程序,ErrorHandler:错误处理块入口 以下语句利用Err对象的Number属性指示的错误号处理出错Select Case Err.NumberCase 53 53号错误为文件不存在,在MsgBox窗内给出出错提示Msg=文件不存在!常数vbRetryCancel在MsgBox窗给出Retry与Cancel按钮 VbCritical提示Stop图标、VbExclamation提示警告图标Style=vbRet
17、ryCancel+vbCritical+vbDefaultButton2Title=出错提示,Response=MsgBox(Msg,Style,Title)等待用户处理决定If Response=vbCancel Then 若按下Cancel按钮,放弃处理Exit SubEnd IfCase 71 71号错误为A盘未准备好错误Msg=A盘未准备好Style=vbRetryCancel+vbCritical+vbDefaultButton2Title=提示Response=MsgBox(Msg,Style,Title)If Response=vbCancel ThenExit Sub,End
18、If Case Else 当发生其它不可预知的错误时,退出本程序 MsgBox 其它错误,退出本程序!Exit Sub End Select Resume Resume再次执行原出错语句End Sub,本过程根据Err函数返回的错误号,做相应的错误处理。将错误分为文件不存在和A盘未准备好两种可预知的错误以及其它不可预知的错误。当发生不可预知的错误时,终止本程序的执行,否则,在MsgBox窗内给出出错提示。此时,用户可关闭好A驱动器小门或重插入软盘,再按下Retry按钮,本过程会用Resume命令再次执行原出错语句,若执行成功,则结束,否则,再重复出现MsgBox窗,直至错误排除。若在MsgBo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 11 章程 调试 出错 处理

链接地址:https://www.31ppt.com/p-5657750.html