资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,主页,第,8,程序调试是进行程序设计的基本功之一,也是一个实践性很强的工作,需要在实践中不断总结经验,才能逐步提高自己的调试程序的能力。,程序调试与错误处理,程序调试的主要任务:查找程序的错误和排解错误,本章主要内容,错误类型,程序调试,错误处理,退出,第8章,程序调试与错误处理,三类错误类型:编译错误,运行时错误和规律错误 1.编译错误 编译错误是指在程序编译过程中消失的错误。通常是由于不正确书写代码而产生的。,如:关键字写错,遗漏标点符号,括号不匹配等。例如:Foor t=1 To 100,2.运行时错误 运行时的错误是指应用程序在运行期间执行了非法操作所发生的错误。举例(“下标越界”):,Dim D(20)As Integer,k As Integer For k=1 To 30 D(k)=k*K Next k,8.1 VB程序中的错误类型,3.规律错误 规律错误使程序运行时得不到预期的结果。这种程序没有语法错误,也能运行,但却得不到正确的结果。,例如,在一个算术表达式中,把乘号“*”写成了加号“+”,条件语句的条件写错,循环次数计算错误等,例如,要求10!,假设承受:Private Sub Form_Load Dim t As Integer For i=1 To 10 t=t*i Next i Show:Print t End Sub 运行程序时输出的结果是0,通常,调试程序过程中所花的大局部时间和精力都在规律错误上,程序工作模式,设计模式、运行模式和中断模式,1设计模式 可以建立应用程序的用户界面,设置控件的属性,编写程序代码等,2.运行模式 可以测试程序的运行结果,可以与应用程序对话,还可以查看程序代码,但不能修改程序,3.中断模式 可以利用各种调试手段检查或更改某些变量或表达式的值,或者在断点四周单步执行程序,以便观看程序的动态变化,找出可能的错误,8.2,程序调试,例8.0,在代码窗口中设置断点,鼠标,单击,使用“调试”菜单或“调试”工具栏,1切换断点 “切换断点”按钮用来设置断点,2.逐语句 逐条语句执行程序,每执行一条语句后就返回中断模式 假设执行的是过程调用的代码(如Call),“逐语句”操作也会跟踪到被调过程中连续一条语句一条语句的执行,3.逐过程,逐过程执行是以整个函数或过程为一个整体,一次执行。逐过程与逐语句一样,能够一条语句一条语句地执行代码。把被调用的函数或过程当作一个语句来对待,切换断点 逐过程 本地窗口 监视窗口,逐语句 跳出 立即窗口 快速监视,8.2.2 VB调试工具,4.跳出 单击“调试”工具栏上的“跳出”按钮,则VB将连续执行完该过程的其余局部,返回调用过程的下一条语句并回复中断模式,5.本地窗口 显示当前过程中全部变量和活动窗体的全部属性值 Me代表当前窗体;单击“+”号或“-”号,6.马上窗口 可以检查某个属性或者变量的值,也可以对表达式求值,或为变量或属性赋值等,7.监视窗口 对用户定义的表达式进展监视,例8.1 运行以下的窗体装载大事过程,Private Sub Form_Load,Dim mys As Integer,mys=“学习VB程序设计语言“,MsgBox mys,End Sub,运行时系统将弹出一个出错消息框,其中提示发生“类型不匹配”的错误。为了检查出错缘由,可以在马上窗口中键入以下命令来检查变量的值:,?mys?是Print的简写,从显示结果可以看出,出错前变量mys的当前值为数值0,它是一个整型变量,不能用字符串“学习VB程序设计语言“为它赋值,故发生了“类型不匹配”的错误。,例8.1,对于某些可预见的错误,可以利用VB的错误处理程序捕获它,对其进展适当的处理,并使程序连续执行。这样就能够使开发的软件具有更强的适应性。,8.3.1 错误处理的步骤,(1)利用Err对象记录错误的类型、出错缘由等。(2)强制转移到用户自编的“错误处理程序段”的入口。(3)在“错误处理程序段”内,依据具体错误进展处理,假设问题有解决方法,则在处理后返回原程序某处连续执行,否则,停顿程序执行,8.3,错误处理,Err对象是全局性的固有对象,用来保存最新的运行时错误信息,其属性由错误生成者设置,1.主要属性 (1)Number属性:数值。范围为065535,保存错误号 (2)Source属性:字符串。指明错误产生的对象或应用程序的名称 (3)Description属性:字符串。用于记录简短的错误信息描述,2.常用方法 (1)Clear方法:用于去除Err对象的当前属性值。(2)Raise方法:产生错误,用于调试错误处理程序段。,例如,执行语句Err.Raise 55将产生55号运行时错误,即“文件已翻开”错误,8.3.2,Err对象,使用On Error语句可以捕获错误,其语法格式如下:On Error 标号 通常,该语句放置在过程的开头位置。在程序运行过程中,当该语句后面的代码出错时,则程序就会自动跳转到标号所指定的程序行去运行。,标号所指示的程序行通常为错误处理程序段的开头行。,一个使用错误处理的例如:On Error GoTo ErrLine 以后出错时转移至ErrLine,.ErrLine:标号 .Resume 返回语句,9.3.3,捕获错误语句(On Error),当指定的错误处理完成后,应当掌握程序返回到适宜的位置连续执行。,返回语句Resume有三种用法:(1)Resume 0:程序返回到出错语句处连续执行。(2)Resume Next:程序返回到出错语句的下一语句。(3)Resume 标号:程序返回到标号处连续执行。,退出错误处理语句(Resume),错误处理流程,主程序,On Error GoTo 标号,完毕,对错误进展处理,Resume,错误处理程序段,标号:,出错时转移,处理后返回,指定的位置,输入某个数,求该数的平方根。当用户输入负数时,使用On Error.Resume进展处理,Private Sub Form_Load,Dim x As Single,y As Single,i As String,On Error GoTo errln ”以下出错时转移到errln,Show:i=“i 为实数标记,x=Val(InputBox(“请输入一个数“),y=Sqr(x)x 为负数时会出错,Print y;i:Exit Sub 显示及退出过程,errln:”标号,If Err.Number=5 Then ”本错误的错误码为5,x=-x ”转换为正数,i=“i“”复数标记,Resume ”返回,Else ”其他错误处理,MsgBox(“错误发生在“&Err.Source&“,代码为“&_,Err.Number&“,即“&Err.Description),End,End If,End Sub,例8.3 错误处理程序例如,例8.3,程序运行时,当用户输入一个正数时,则显示出该数的平方根;假设输入的是一个负数,则因求负数的平方根(通过函数Sqr)而出错,此时会跳转到错误处理程序段。,在错误处理程序段中,先推断错误码,假设是5(即发生求负数的平方根的错误),则将该负数转换为正数,设置复数标记,然后执行Resume语句返回到原出错处连续执行。,假设发生的不是错误5,则显示有关信息后强制完毕,
展开阅读全文