程序调试与错误处理



《程序调试与错误处理》由会员分享,可在线阅读,更多相关《程序调试与错误处理(62页珍藏版)》请在装配图网上搜索。
1、第 9章 程 序 调 试 与 错 误 处 理第9章 程序调试与错误处理9.1 程序调试9.2 错误处理程序设计9.3 错误处理实例 第 9章 程 序 调 试 与 错 误 处 理9.1 程序调试9.1.1应用程序错误与调试9.1.2段点设置与立即窗口 第 9章 程 序 调 试 与 错 误 处 理9.1.1应用程序错误与调试1应用程序的错误 为了更有效的使用调试手段,把可能遇到的错误分成3类,即编译错误、运行错误、逻辑错误 2调试工具栏 Visual Basic 6.0不能诊断或更正错误,但能提供工具帮助用户分析程序是如何从过程的一部分流向另一部分,分析变量和属性是如何随着语句的执行而改变。有了调
2、试工具,就能深入到应用程序内部去观察,从而确定到底发生了什么,以及会发生。 第 9章 程 序 调 试 与 错 误 处 理9.1.2段点设置与立即窗口1Visual Basic的模式2中断与程序调试3监视与监视表达式4立即窗口 返 回 第 9章 程 序 调 试 与 错 误 处 理1Visual Basic的模式Visual Basic的运行有三种模式:设计模式、运行模式(Run)和中段模式(Break)。启动Visual Basic后进入设计模式,主窗口标题栏有“设计”二字。建立应用程序的所有步骤基本上都在设计模式下完成 第 9章 程 序 调 试 与 错 误 处 理1Visual Basic的模
3、式执行“启动”命令后进入执行模式,Visual Basic的主窗口标题栏上的“设计”变成了“运行”。在运行模式下,Visual Basic把全部控制权都交给应用程序,可以查看程序代码,但不能修改程序代码,还可以执行“结束”命令回到设计模式 第 9章 程 序 调 试 与 错 误 处 理1Visual Basic的模式中断模式是程序执行过程的一个暂停状态,进入中断模式后主窗口标题栏上的“运行”变成了“break”.在中断模式下,可以检查、修改程序代码,也可以检查程序中变量的中间值,还可以继续执行 第 9章 程 序 调 试 与 错 误 处 理2中断与程序调试Visual Basic提供段点和Stop
4、语句,把应用程序置于中断模式下可以使用以下方法进入中断模式(1)在程序中使用Stop语句,程序运行到Stop语句进入中断模式(2)在设计或中断模式下设置程序的断点 第 9章 程 序 调 试 与 错 误 处 理2中断与程序调试(3)程序运行时出现错误,自动进入中断模式(4)程序运行时,按下Ctrl+Break键进入中断模式(5)程序运行时,在菜单栏上选择“运行中断”选项进入中断模式(6)程序运行时,单击工具栏上的“中断”按钮进入中断模式 第 9章 程 序 调 试 与 错 误 处 理设置断点的方法:在程序代码窗口中,将光标移到希望中断的语句上,在菜单上选择“调试-切换段点”选项,光标所在语句设置为
5、断点。被设为断点的语句为反向显示并在其前面显示一个原点。 第 9章 程 序 调 试 与 错 误 处 理利用断点只能粗略的判断错误发生的位置。利用程序跟踪可以直接看到程序的执行情况和执行顺序,找到发生错误的位置。对于逻辑错误,利用断点可以跟踪到程序运行的去向。Visual Basic的跟踪方式包括逐语句执行,逐过程执行和跳出执行。 第 9章 程 序 调 试 与 错 误 处 理逐语句执行是每次只执行一个语句,并根据输出结果判断执行的语句是否正确。逐语句执行开始后,程序进入执行模式,执行一条语句切换到中断模式,并把下一条语句作为待执行的语句。 第 9章 程 序 调 试 与 错 误 处 理逐过程执行与
6、逐语句执行基本相同。逐过程执行不跟踪到过程中,即把被调用的过程当作一条语句一次执行完毕。“跳出”可以执行当前过程的饿其他部分,并在调用过程的下一行中断执行。若想暂时避开程序的某一部分,可以通过跳出执行来实现。 第 9章 程 序 调 试 与 错 误 处 理3监视与监视表达式Visual Basic自动对监视表达式进行监视。应用程序进入中断模式后,这些监视表达式出现在“监视”窗口中,可在该处观察其值。 第 9章 程 序 调 试 与 错 误 处 理3监视与监视表达式只要表达式的值改变或等于一个特定的值,就可把应用程序设置为中断模式直接观察。例如,循环计数器达到一个特定值时,可用一个监视表达式把应用程
7、序设置为中断模式,而不是一次一条语句执行数十次乃至数百次循环。当过程中的一个标志值改变时,都可使应用程序进入中断。 第 9章 程 序 调 试 与 错 误 处 理3监视与监视表达式在设计或中断模式下,可添加监视表达式。方法:在菜单栏上选择“调试添加监视”选项,弹出“添加监视”对话框,在该对话框中添加监视表达式 第 9章 程 序 调 试 与 错 误 处 理添加监视表达式的步骤若有必要,设置要监视的变量的范围。如果在“上下文”中选定“过程”或“添加模块”选项,则从相应的列表框中选定一个过程、窗体或模块名若有必要,在“监视类型”组中选定选项按钮,以确定对监视表达式的响应方式单击“确定”按钮,完成设置
8、第 9章 程 序 调 试 与 错 误 处 理添加监视表达式的步骤若有必要,设置要监视的变量的范围。如果在“上下文”中选定“过程”或“添加模块”选项,则从相应的列表框中选定一个过程、窗体或模块名若有必要,在“监视类型”组中选定选项按钮,以确定对监视表达式的响应方式单击“确定”按钮,完成设置 第 9章 程 序 调 试 与 错 误 处 理4立即窗口程序进入中断模式后,将自动激活立即窗口;也可以直接在系统菜单栏上选择“试图立即窗口”选项,打开立即窗口。若中断时程序正在执行某个过程,该过程的代码窗口与立即窗口一起显示。在立即窗口中,可以直接执行Visual Basic语句,并且不影响代码窗口的程序代码。
9、 第 9章 程 序 调 试 与 错 误 处 理9.2 错误处理程序设计9.2.1应用程序错误与调试9.2.2 Resume 语句9.2.3 Err对象和Erl函数 9.2.4错误处理程序 第 9章 程 序 调 试 与 错 误 处 理9.2.1应用程序错误与调试1设置错误陷阱语句2取消该错误捕捉功能 第 9章 程 序 调 试 与 错 误 处 理1设置错误陷阱语句 Visual Basic用On Error语句捕捉程序运行时的错误,以便设置错误陷阱,并利用Err对象及相关的属性、方法确定程序运行时的错误起因,以选择响应的解决措施,实现在线错误处理。语句格式:On Error语句有3种基本格式。 格
10、式1:On Error 格式2:On Error 0 格式3:On Error Resume Next 第 9章 程 序 调 试 与 错 误 处 理1设置错误陷阱语句 功能:设置或取消错误捕捉功能。说明:在程序中,用On Error语句语句设置的错误捕捉功能一直起作用,直到另一个On Error语句取消所设置的错误捕捉功能。在错误捕捉处理程序起作用期间,一旦发生错误,程序即转向指定的行标号并执行错误处理程序。 第 9章 程 序 调 试 与 错 误 处 理1设置错误陷阱语句 格式1设置从指定行号开始的错误处理程序。行号可以是任意的行标号或行号,并要求与On Error语句在同一过程内。格式2取消
11、已设置的错误捕捉程序。在已设置错误捕捉处理程序的情况下,执行该语句将已激活的错误处理程序变成无效。格式3指明发生运行错误时程序跳过错误继续执行,即发生错误时,不对错误做任何处理,直接跳到产生错误语句的下一个语句继续执行。若希望在程序出错时进行错误处理,必须用格式1重新设置其他错误处理,或用格式 第 9章 程 序 调 试 与 错 误 处 理1设置错误陷阱语句 Visual Basic用On Error语句捕捉程序运行时的错误,以便设置错误陷阱,并利用Err对象及相关的属性、方法确定程序运行时的错误起因,以选择响应的解决措施,实现在线错误处理。语句格式:On Error语句有3种基本格式。 格式1
12、:On Error 格式2:On Error 0 格式3:On Error Resume Next功能:设置或取消错误捕捉功能。 第 9章 程 序 调 试 与 错 误 处 理1设置错误陷阱语句 说明:在程序中,用On Error语句语句设置的错误捕捉功能一直起作用,直到另一个On Error语句取消所设置的错误捕捉功能。在错误捕捉处理程序起作用期间,一旦发生错误,程序即转向指定的行标号并执行错误处理程序。 第 9章 程 序 调 试 与 错 误 处 理1设置错误陷阱语句 格式1设置从指定行号开始的错误处理程序。行号可以是任意的行标号或行号,并要求与On Error语句在同一过程内。格式2取消已设
13、置的错误捕捉程序。在已设置错误捕捉处理程序的情况下,执行该语句将已激活的错误处理程序变成无效。 第 9章 程 序 调 试 与 错 误 处 理1设置错误陷阱语句 格式3指明发生运行错误时程序跳过错误继续执行,即发生错误时,不对错误做任何处理,直接跳到产生错误语句的下一个语句继续执行。若希望在程序出错时进行错误处理,必须用格式1重新设置其他错误处理,或用格式 第 9章 程 序 调 试 与 错 误 处 理2 取消该错误捕捉功能 Private Sub Form_Load() On Error Goto ErrLine If n=100 On Error Resume NextEnd IfExit S
14、ubErrLine End Sub 第 9章 程 序 调 试 与 错 误 处 理9.2.2 Resume 语句语句格式:该语句有3种格式。 格式1:Resume 格式2:Resume Next 格式3:Resume 第 9章 程 序 调 试 与 错 误 处 理9.2.2 Resume 语句功能:该语句放在错误处理程序中,指定执行错误处理程序后继续执行的语句,以便在指定位置恢复程序的执行。 说明:该语句与Return语句类似,但只能用于错误处理程序中,即必须与On Error语句配套使用。 第 9章 程 序 调 试 与 错 误 处 理9.2.3 Err对象和Erl函数Err对象含有关于运行出错时
15、的错误信息,其属性由错误的生成者设置。该错误生成着可能是Visual Basic系统,也可能是某对象,或者是程序设计者。Err对象的默认属性是Numeber。该默认属性可以直接用对象名称Err表示,所以不必修改以前Err函数或Err语句书写的程序代码。 第 9章 程 序 调 试 与 错 误 处 理9.2.3 Err对象和Erl函数出现错误时,Err返回错误的代码,错误代码的取值范围为132676。 第 9章 程 序 调 试 与 错 误 处 理9.2.3 Err对象和Erl函数Err函数返回错误语句的行号。若发生错误的程序没有行号,则Err函数总是返回0。虽然Visual Basic中也可以使用
16、行号,但行号只是某一行的标识,但与旧版本Basic语言兼容,与程序的执行顺序无关。 第 9章 程 序 调 试 与 错 误 处 理9.2.3 Err对象和Erl函数只有在发生错误时,Err对象和Erl函数才返回有意义的值,通常把它们放在错误处理程序中,用来确定所发生的是什么错误,以及采取什么操作纠正错误。 第 9章 程 序 调 试 与 错 误 处 理Private Sub Command_Click() Dim Msg,NI,UsrErr On Error GoTo ErrHand NI=Chr(10) Msg=“ 请 输 入 一 个 错 误 号 查 看 相 应 错 误 信 息 ” UsrErr
17、=InputBox(Msg) Error UsrErr Exit SubErrHand: Msg=“ 错 误 号 ” & Err &“ 的 信 息 是 : ” & NI & & Error(Err) & sgBox Msg Resume NextEnd Sub 第 9章 程 序 调 试 与 错 误 处 理9.2.4错误处理程序应用程序运行过程中,出现错误是不可避免的,硬件出现的问题或用户的误操作,都会造成运行出错,这些错误可能使程序意外的终止,一般无法使应用程序继续运行。有些错误也许不会中断程序运行,但可能使代码产生意想不到的结果。因此必须用On Error语句捕获错误并执行错误处理程序,以避
18、免应用程序不必要的意外中断。在程序设计中,通过设置错误对象Err的各种属性,如错误号、描述等,使应用程序在错误发生时可以对错误状况作出响应或处理 第 9章 程 序 调 试 与 错 误 处 理设计错误处理程序包括3个步骤1、设置错误捕获当应用程序执行到On Error语句时,激活错误捕获,用 On Error语句指定错误处理程序开始的标号。当错误发生时,通知应用程序在分支点设置或激活错误捕获。当包含错误捕获的过程处于活动时,错误捕获始终是激活的,即直到该过程执行Exit sub、Exit函数、Exit属性、End Sub、End函数或End属性语句时,错误捕获才停止。尽管在任一时刻任一过程中只能
19、激活一个错误捕获,但可建立几个选择的错误捕获并在不同的时刻激活不同的错误捕获程序 第 9章 程 序 调 试 与 错 误 处 理2、编写错误处理程序 错误处理程序应对所有能预见的错误都不得作出响应或处理。错误处理程序逻辑的第一步,是添加行标号,行标号标志着错误处理程序的开始。行标号应该有一个具有描述性的名称,其后必须加冒号。 基本的约定:把错误处理代码放在过程末端,该过程在紧靠行标号前方处使用Exit Sub、Exit函数或Exit属性语句。这样,如果未出现错误,过程可避免行错误处理代码。 第 9章 程 序 调 试 与 错 误 处 理错误处理程序体包含实际处理错误的代码,通常以Select Ca
20、se 或if.ThenElse语句的形式出现。程序中需要确定可能会发生什么错误,对每种错误提供响应的操作方法。例如,在“磁盘未准备好”错误的情况下,需要提示用户插盘。为了处理所有意想不到的错误,应使用else或case else语句提供选项,以对不能预测的错误作出响应。 Err对象的Number属性包含数值型的错误代码,错误代码表最新的运行错误号。借助Err对象与select case或if thenelse语句的组合,可以对出现的任何错误采取有针对性的处理和操作。 第 9章 程 序 调 试 与 错 误 处 理3、出错误处理程序 在错误处理程序中,可以用 Resume Next语句使程序返回出
21、错语句之后的语句。 第 9章 程 序 调 试 与 错 误 处 理9.3 错误处理实例首先建立程序,这个程序的目的是要求一个整数的阶乘。当输入一个正整数时,程序首先对输入参数进行有效性检查,如果参数有效则求出阶乘并返回结果,否则提示输入参数无效,并要求重新输入。 第 9章 程 序 调 试 与 错 误 处 理9.3 错误处理实例按下面步骤建立这个程序:运行Visual Basic6.0并建立标准工程。单击工具栏中的Lable控件,在Form1窗体上绘制一个标签,并将其Caption属性社为“请输入(020)之间整数”。单击工具栏中的Text控件,并在Form1窗体中绘制一个文本框,然后将其Text
22、设置为空。 第 9章 程 序 调 试 与 错 误 处 理9.3 错误处理实例单击工具栏中的CommandButton控件,并放置在窗体中,将其Caption属性设为“计算阶乘”。最后再放置两个标签到窗体Form1中,属性采用缺省值。在这个程序中需要处理的事件过程只有Command1_Click。在该过程中,需要进行参数检查和进行阶乘计算。这里编写了两个函数来完成这两个功能。 第 9章 程 序 调 试 与 错 误 处 理9.3 错误处理实例函数CheckParameters用来检查用户输入的参数。返回值是检查过的合法参数。函数JIECHENG计算一个数的阶乘值。它返回计算结果 第 9章 程 序
23、调 试 与 错 误 处 理Function checkprameters() 用户输入转化为数值参数x=Val(text1.text) 检查用户输入是否有效如果输入错误,则提示用户重新输入输入正确,就把检查过的参数作为结果返回if x20 and x=0 thenlabel3.caption=str$(jiecheng(retV)end if end sub 第 9章 程 序 调 试 与 错 误 处 理下面测试程序的运行。(1)按F5键运行程序,并在文本框中输入0,单击计算阶乘按扭,得到图所示的结果。这个结果是正确的 第 9章 程 序 调 试 与 错 误 处 理(2)测试计算-1的阶乘,正常情
24、况下程序应显示输入错误等提示。在文本框中输入“-1”,单击计算阶乘按钮显然这个结果与预期的不符,是错误的。下面就来查找该错误。由于输入无效参数-1时程序并没有显示出错提示所以推测在检查参数的代码中出了问题 第 9章 程 序 调 试 与 错 误 处 理(3)打开代码窗口,在调用CHeckPARAMETERS处设置断点,以便程序在检查参数之前中断运行,这样可以查看程序状态和中间结果。加入断点的操作可按下面步骤进行。代码窗口中,把光标移动到要加断点的一行。打开调试菜单,单击切换断点菜单项或按F9键。这时所选的语句出现一红色亮条,标识所设断点处。图显示了加入断点后的情形。 第 9章 程 序 调 试 与
25、 错 误 处 理如果要去除断点,可以打开调试菜单,单击切换断点菜单项或按F9键。也可打开调试菜单,单击清除所有断点菜单项以清除所有断点 第 9章 程 序 调 试 与 错 误 处 理(4)按F5键运行程序。在文本框中输入“-1”,单击计算阶乘按钮,这时程序在断点处中断,。下面单步执行,跟踪检查参数这部分代码的运行(5)打开调试菜单,单击语句菜单项或按F8键单步执行,程序转入CHECKPARAMETER函数中。在执行到IF 语句处时,打开视图菜单击立即窗口菜单项,这时桌面上出现了立即窗口。在立即窗口中输入“?X”,观程序接收到的参数值。 立即窗口中显示的X值为-1,说明程序接收到的参数是正确的,错
26、误可能在后面,所以继续单步执行 第 9章 程 序 调 试 与 错 误 处 理(6)按F8键使用单步运行,程序流程转到ELSE语句处。现在发现问题就出在这里,因输入的-1不在0-20之间,程序应执行LABEL2。CAPTION=“输入错误!请重新输入!”语句,以显示输入错误提示,而现在没有执行这条语句,因此在IF判断语句中的条件设置可能有问题。仔细查看IF 语句,发现果然有问题,这条语句写的是:if x20 and x20 and x20 OR x0”,再按F5键运行。现在程序已经显示出错信息,说明参数检查部分已正常工作 第 9章 程 序 调 试 与 错 误 处 理(7)关闭正在运行的程序,打开
27、调试菜单,单击清除所有断点菜单项,然后按F5键运行程序。在输入文本框中输入5,再单击计算阶乘按钮。(8)观察计算结果,发现5的阶乘等于1,显然是不正确的。这说明阶乘计算也有错误。下面再观察求解阶乘的函数 。(9)关闭正在运行的程序,然后打开调试菜单,单击添加监视菜单项,并按图所示进行设置。单击确定按钮,再按F5键运行程序。在输入框重新输入5,单击计算阶乘按钮 第 9章 程 序 调 试 与 错 误 处 理(10)程序在调用JIECHENG函数处中断。打开视图菜单,单击调用堆栈菜单项,打开调用堆栈窗口,如图所示,观察JIECHENG函数的递归调用是否存在问题。在调用堆栈窗口中显示了当前还末执行的函
28、数和过程。这里显示了5个“工程1.FORM1.JIECHENG”工程,说明JIECHENG函数在计算5的阶乘时的递归调用是正确的。再看监视窗口,JIECHENG函数当前的返回值为1,也是正确的 第 9章 程 序 调 试 与 错 误 处 理(11)在调用堆栈窗口中单击关闭按钮,关闭调用堆栈窗口,然后按F5键继续运行。这时JIECHENG函数返回值改变,程序进入中断方式。再打开调用堆栈窗口。JIECHENG函数的返回值为0,而实际应为2,错误发生在这里。关闭调用堆栈窗口,结果程序运行。Function jiecheng(byval x as integer)as longIf x=o or x=1
29、 thenJiecheng=1ElseJieheng=x*jiecheng(x-1)End if End function 第 9章 程 序 调 试 与 错 误 处 理9.4 本章小结 应用程序在运行中出现错误是不可避免的,甚至防不胜防。虽然程序设计人员可以消除大部分潜在的错误,语法错误也可以在编译中查出,但不可能消除所有的错误。因此,必须在系统运行阶段发现或捕捉这些不可预见的错误。Vb中用On Error语句捕捉程序运行时的错误,以便设置错误陷阱,通过编写错误处理程序,对所有能预见的错误都作出响应或处理,实现在线错误处理。 第 9章 程 序 调 试 与 错 误 处 理9.4 本章小结VB不能
30、诊断或更正错误,但能提供工具帮助用户分析和测试。有了调试工具,就能深入到应用程序内部去观察,从而确定到底发生了什么以及为什么会发生。VB的调试支持断点、中断表达式、通过代码一次执行一个语句或一个过程、显示变量和属性的值等方式 第 9章 程 序 调 试 与 错 误 处 理一、判断题1、错误处理程序只能判断程序中的语法错误。2、Visual Basic的“断点”由“切换断点”命令设置,撤消“断点”可由“切换断点”命令完成。3、Visual Basic中On Err GoTo 0 语句是用于捕捉错误的语句。4、若在On Error GoTo 0语句之后发生了运行错误,则程序由一般的Visual Ba
31、sic错误处理子程序处理该错误,且程序可以继续运行。 第 9章 程 序 调 试 与 错 误 处 理二、问答题1、应用程序错误包括哪几种类型?它们一般在什么情况下产生?2、在Visual Basic中可以使用哪些方法对程序进行调试,它们各有什么优缺点?3、试比较监视窗口与立即窗口的区别?4、在Visual Basic中创建一个应用程序的基本步骤是什么?5、编写错误处理程序有什么要求?列出常用的几个语句或方法?6、什么是监视表达式?监视表达式有什么作用? 第 9章 程 序 调 试 与 错 误 处 理三、设计题试设计一个错误处理程序,处理从软盘A读取文件时产生的错误,若A驱动器未准备好,则显示“Disk Not Ready!”等;当软磁盘中不存在所打开的文件时,显示“File Not Found!”等信息
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 踏春寻趣 乐享时光——春季旅游踏春出游活动
- 清明假期至安全不缺席风起正清明安全需守护
- 全国党员教育培训工作规划
- XX中小学公共卫生培训树立文明卫生意识养成良好卫生习惯
- 小学生常见传染病预防知识培训传染病的预防措施
- 3月18日全国爱肝日中西医结合逆转肝硬化
- 肝病健康宣教守护您的肝脏健康如何预防肝炎
- 垃圾分类小课堂教育绿色小卫士分类大行动
- 中小学班主任经验交流从胜任到优秀身为世范为人师表 立责于心履责于行
- 教师数字化转型理解与感悟教师数字化转型的策略与建议
- 团建小游戏团建破冰小游戏团队协作破冰游戏多人互动
- 教师使用deepseek使用攻略让备课效能提升
- 办公室会议纪要培训会议内容会议整理公文攥写
- 党员要注重培塑忠诚奋斗奉献的人格力量
- 橙色卡通风儿童春季趣味运动会