如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第10章程序调试和错误处理【目的要求】1.理解程序的错误类型;2.掌握VB提供的常用调试工具的使用3.3.掌握错误的捕获与处理方法;【重点】错误的捕获与处理方法;10.1VB程序的错误类型3.逻辑错误10.2VB程序的工作模式VB程序有三种工作模式:设计模式(DesignTime)、运行模式(RunTime)和中断模式(BreakModel)。1.设计模式2.运行模式3.中断模式在中断模式下,暂停应用程序的执行,此时可以检查程序代码,并可以进行修改,也可以检查数据是否正确,修改完程序后,可继续执行程序。VB所有调试手段均可以在中断模式下应用。可以用以下四种方式进入中断模式:l在“运行”模式下,执行“运行”菜单中的“中断”命令;l在程序中设置断点,程序运行到断点处时自动进入中断模式;l在程序中加入“STOP”语句,程序运行到该语句处时自动进入中断模式;l在程序运行过程中,如果出现错误,则自动进入中断模式;图10-61.设置断点2.跟踪程序运行3.调试窗口本地窗口用法一:例:通过【监视】窗口对【例10.1】进行调试,检测变量s和i的值的变化情况。用法二:这种用法是在当表达式的值满足某个条件时,可以使应用程序自动进入到中断模式的一种调试手段。这种方法不需要在代码区设置断点。例:在【例10.1】中,为了检测当变量s的值大于3时,循环变量i的值;可以通过对【监视窗口】的相关设置来完成。立即窗口10.3.2调试示例双击【计算】按钮,编写程序代码:PrivateSubCommand1_Click()DimxAsInteger,yAsInteger,zAsIntegerx=Val(Text1.Text)y=Val(Text2.Text)Callsum(x,y,z)‘调用过程sum,通过实参数z返回结果Text3.Text=Str(z)EndSubl调试步骤:(1)将断点设置在主程序的“Callsum(x,y,z)”语句处。然后运行程序,在Text1和Text2中分别输入1和5。(2)运行程序,单击【计算】按钮,当程序中断后,打开【监视】窗口,向【监视】窗口添加监视表达式,x、y、z、a、b、c;注意此时各监测表达式的值。因为当前程序的控制权在主程序,所以过程sum中的参数a、b、c还没有意义,在监视窗口中显示为“<溢出上下文>”。(3)按F8键以逐语句方式运行程序,此时,程序转入到sum过程执行,注意各监测表达式的值的变化情况,如下图所示。(5)按F8键继续以逐语句方式运行程序,此时过程sum执行结束,返回到主程序Command1_Click(),过程sum中的变量重新显示为“<溢出上下文>”。说明这些变量此时没有意义(这也说明:过程内部的变量的作用域只限于当前过程)。同时我们注意到,作为与形参数c对应的实参数z的数值仍然为0。所以,我们试图通过将形参数c的运算结果传递给z,并没有成功。10.4错误捕获及处理Err对象的属性有:Number:错误号Description:错误描述HelpFile:该错误相应的帮助文件HelpContex:该错误帮助说明的主题号Source:错误来源VB提供的Error函数用于返回错误信息,其语法如下:Error(错误号)10.4.3捕获错误语句【例10.3】编写程序,当除数为0时显示提示信息。2.用法二<Resume>语句应用:<Resume语句标号|行号>语句应用:<ResumeNext>语句:如果不想在错误发生时进行任何错误处理(包括错误提示),可以在代码的开始部分使用OnErrorResumeNext语句,该语句将忽略所有出现的错误,使程序一直执行到结束。3.Resume和ResumeNext语句的区别例如:PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingleOnErrorGoToerrora=Val(InputBox("请输入被除数","除法"))OnErrorGoTo0'停止错误的捕捉b=Val(InputBox("请输入除数","除法"))c=a/bPrintcExitSuberror:MsgBox"除数为零!"ResumeNextEndSub