您好,欢迎访问三七文档
第9章程序调试与错误处理第9章程序调试与错误处理9.1程序调试9.2错误处理程序设计9.3错误处理实例第9章程序调试与错误处理9.1程序调试9.1.1应用程序错误与调试9.1.2段点设置与立即窗口第9章程序调试与错误处理9.1.1应用程序错误与调试1.应用程序的错误为了更有效的使用调试手段,把可能遇到的错误分成3类,即编译错误、运行错误、逻辑错误2.调试工具栏VisualBasic6.0不能诊断或更正错误,但能提供工具帮助用户分析程序是如何从过程的一部分流向另一部分,分析变量和属性是如何随着语句的执行而改变。有了调试工具,就能深入到应用程序内部去观察,从而确定到底发生了什么,以及会发生。第9章程序调试与错误处理9.1.2段点设置与立即窗口1.VisualBasic的模式2.中断与程序调试3.监视与监视表达式4.立即窗口返回第9章程序调试与错误处理1.VisualBasic的模式VisualBasic的运行有三种模式:设计模式、运行模式(Run)和中段模式(Break)。启动VisualBasic后进入设计模式,主窗口标题栏有“[设计]”二字。建立应用程序的所有步骤基本上都在设计模式下完成第9章程序调试与错误处理1.VisualBasic的模式执行“启动”命令后进入执行模式,VisualBasic的主窗口标题栏上的“[设计]”变成了“[运行]”。在运行模式下,VisualBasic把全部控制权都交给应用程序,可以查看程序代码,但不能修改程序代码,还可以执行“结束”命令回到设计模式第9章程序调试与错误处理1.VisualBasic的模式中断模式是程序执行过程的一个暂停状态,进入中断模式后主窗口标题栏上的“[运行]”变成了“[break]”.在中断模式下,可以检查、修改程序代码,也可以检查程序中变量的中间值,还可以继续执行第9章程序调试与错误处理2.中断与程序调试VisualBasic提供段点和Stop语句,把应用程序置于中断模式下可以使用以下方法进入中断模式(1)在程序中使用Stop语句,程序运行到Stop语句进入中断模式(2)在设计或中断模式下设置程序的断点第9章程序调试与错误处理2.中断与程序调试(3)程序运行时出现错误,自动进入中断模式(4)程序运行时,按下Ctrl+Break键进入中断模式(5)程序运行时,在菜单栏上选择“运行→中断”选项进入中断模式(6)程序运行时,单击工具栏上的“中断”按钮进入中断模式第9章程序调试与错误处理设置断点的方法:在程序代码窗口中,将光标移到希望中断的语句上,在菜单上选择“调试---切换段点”选项,光标所在语句设置为断点。被设为断点的语句为反向显示并在其前面显示一个原点。第9章程序调试与错误处理利用断点只能粗略的判断错误发生的位置。利用程序跟踪可以直接看到程序的执行情况和执行顺序,找到发生错误的位置。对于逻辑错误,利用断点可以跟踪到程序运行的去向。VisualBasic的跟踪方式包括逐语句执行,逐过程执行和跳出执行。第9章程序调试与错误处理逐语句执行是每次只执行一个语句,并根据输出结果判断执行的语句是否正确。逐语句执行开始后,程序进入执行模式,执行一条语句切换到中断模式,并把下一条语句作为待执行的语句。第9章程序调试与错误处理逐过程执行与逐语句执行基本相同。逐过程执行不跟踪到过程中,即把被调用的过程当作一条语句一次执行完毕。“跳出”可以执行当前过程的饿其他部分,并在调用过程的下一行中断执行。若想暂时避开程序的某一部分,可以通过跳出执行来实现。第9章程序调试与错误处理3.监视与监视表达式VisualBasic自动对监视表达式进行监视。应用程序进入中断模式后,这些监视表达式出现在“监视”窗口中,可在该处观察其值。第9章程序调试与错误处理3.监视与监视表达式只要表达式的值改变或等于一个特定的值,就可把应用程序设置为中断模式直接观察。例如,循环计数器达到一个特定值时,可用一个监视表达式把应用程序设置为中断模式,而不是一次一条语句执行数十次乃至数百次循环。当过程中的一个标志值改变时,都可使应用程序进入中断。第9章程序调试与错误处理3.监视与监视表达式在设计或中断模式下,可添加监视表达式。方法:在菜单栏上选择“调试→添加监视”选项,弹出“添加监视”对话框,在该对话框中添加监视表达式第9章程序调试与错误处理添加监视表达式的步骤若有必要,设置要监视的变量的范围。如果在“上下文”中选定“过程”或“添加模块”选项,则从相应的列表框中选定一个过程、窗体或模块名若有必要,在“监视类型”组中选定选项按钮,以确定对监视表达式的响应方式单击“确定”按钮,完成设置第9章程序调试与错误处理添加监视表达式的步骤若有必要,设置要监视的变量的范围。如果在“上下文”中选定“过程”或“添加模块”选项,则从相应的列表框中选定一个过程、窗体或模块名若有必要,在“监视类型”组中选定选项按钮,以确定对监视表达式的响应方式单击“确定”按钮,完成设置第9章程序调试与错误处理4.立即窗口程序进入中断模式后,将自动激活立即窗口;也可以直接在系统菜单栏上选择“试图→立即窗口”选项,打开立即窗口。若中断时程序正在执行某个过程,该过程的代码窗口与立即窗口一起显示。在立即窗口中,可以直接执行VisualBasic语句,并且不影响代码窗口的程序代码。第9章程序调试与错误处理9.2错误处理程序设计9.2.1应用程序错误与调试9.2.2Resume语句9.2.3Err对象和Erl函数9.2.4错误处理程序第9章程序调试与错误处理9.2.1应用程序错误与调试1.设置错误陷阱语句2.取消该错误捕捉功能第9章程序调试与错误处理1.设置错误陷阱语句VisualBasic用OnError语句捕捉程序运行时的错误,以便设置错误陷阱,并利用Err对象及相关的属性、方法确定程序运行时的错误起因,以选择响应的解决措施,实现在线错误处理。语句格式:OnError语句有3种基本格式。格式1:OnError行号格式2:OnError0格式3:OnErrorResumeNext第9章程序调试与错误处理1.设置错误陷阱语句功能:设置或取消错误捕捉功能。说明:在程序中,用OnError语句语句设置的错误捕捉功能一直起作用,直到另一个OnError语句取消所设置的错误捕捉功能。在错误捕捉处理程序起作用期间,一旦发生错误,程序即转向指定的行标号并执行错误处理程序。第9章程序调试与错误处理1.设置错误陷阱语句格式1设置从指定行号开始的错误处理程序。〈行号〉可以是任意的行标号或行号,并要求与OnError语句在同一过程内。格式2取消已设置的错误捕捉程序。在已设置错误捕捉处理程序的情况下,执行该语句将已激活的错误处理程序变成无效。格式3指明发生运行错误时程序跳过错误继续执行,即发生错误时,不对错误做任何处理,直接跳到产生错误语句的下一个语句继续执行。若希望在程序出错时进行错误处理,必须用格式1重新设置其他错误处理,或用格式第9章程序调试与错误处理1.设置错误陷阱语句VisualBasic用OnError语句捕捉程序运行时的错误,以便设置错误陷阱,并利用Err对象及相关的属性、方法确定程序运行时的错误起因,以选择响应的解决措施,实现在线错误处理。语句格式:OnError语句有3种基本格式。格式1:OnError行号格式2:OnError0格式3:OnErrorResumeNext功能:设置或取消错误捕捉功能。第9章程序调试与错误处理1.设置错误陷阱语句说明:在程序中,用OnError语句语句设置的错误捕捉功能一直起作用,直到另一个OnError语句取消所设置的错误捕捉功能。在错误捕捉处理程序起作用期间,一旦发生错误,程序即转向指定的行标号并执行错误处理程序。第9章程序调试与错误处理1.设置错误陷阱语句格式1设置从指定行号开始的错误处理程序。〈行号〉可以是任意的行标号或行号,并要求与OnError语句在同一过程内。格式2取消已设置的错误捕捉程序。在已设置错误捕捉处理程序的情况下,执行该语句将已激活的错误处理程序变成无效。第9章程序调试与错误处理1.设置错误陷阱语句格式3指明发生运行错误时程序跳过错误继续执行,即发生错误时,不对错误做任何处理,直接跳到产生错误语句的下一个语句继续执行。若希望在程序出错时进行错误处理,必须用格式1重新设置其他错误处理,或用格式第9章程序调试与错误处理2取消该错误捕捉功能PrivateSubForm_Load()OnErrorGotoErrLine…Ifn=100OnErrorResumeNextEndIf…ExitSubErrLine…EndSub第9章程序调试与错误处理9.2.2Resume语句语句格式:该语句有3种格式。格式1:Resume格式2:ResumeNext格式3:Resume行号第9章程序调试与错误处理9.2.2Resume语句功能:该语句放在错误处理程序中,指定执行错误处理程序后继续执行的语句,以便在指定位置恢复程序的执行。说明:该语句与Return语句类似,但只能用于错误处理程序中,即必须与OnError语句配套使用。第9章程序调试与错误处理9.2.3Err对象和Erl函数Err对象含有关于运行出错时的错误信息,其属性由错误的生成者设置。该错误生成着可能是VisualBasic系统,也可能是某对象,或者是程序设计者。Err对象的默认属性是Numeber。该默认属性可以直接用对象名称Err表示,所以不必修改以前Err函数或Err语句书写的程序代码。第9章程序调试与错误处理9.2.3Err对象和Erl函数出现错误时,Err返回错误的代码,错误代码的取值范围为1~32676。第9章程序调试与错误处理9.2.3Err对象和Erl函数Err函数返回错误语句的行号。若发生错误的程序没有行号,则Err函数总是返回0。虽然VisualBasic中也可以使用行号,但行号只是某一行的标识,但与旧版本Basic语言兼容,与程序的执行顺序无关。第9章程序调试与错误处理9.2.3Err对象和Erl函数只有在发生错误时,Err对象和Erl函数才返回有意义的值,通常把它们放在错误处理程序中,用来确定所发生的是什么错误,以及采取什么操作纠正错误。第9章程序调试与错误处理PrivateSubCommand_Click()DimMsg,NI,UsrErrOnErrorGoToErrHandNI=Chr(10)Msg=“请输入一个错误号查看相应错误信息”UsrErr=InputBox(Msg)ErrorUsrErrExitSubErrHand:Msg=“错误号”&Err&“的信息是:”&NI&""""&Error(Err)&""""MsgBoxMsgResumeNextEndSub第9章程序调试与错误处理9.2.4错误处理程序应用程序运行过程中,出现错误是不可避免的,硬件出现的问题或用户的误操作,都会造成运行出错,这些错误可能使程序意外的终止,一般无法使应用程序继续运行。有些错误也许不会中断程序运行,但可能使代码产生意想不到的结果。因此必须用OnError语句捕获错误并执行错误处理程序,以避免应用程序不必要的意外中断。在程序设计中,通过设置错误对象Err的各种属性,如错误号、描述等,使应用程序在错误发生时可以对错误状况作出响应或处理第9章程序调试与错误处理设计错误处理程序包括3个步骤1、设置错误捕获当应用程序执行到OnError语句时,激活错误捕获,用OnError语句指定错误处理程序开始的标号。当错误发生时,通知应用程序在分支点设置或激活错误捕获。当包含错误捕获的过程处于活动时,错误捕获始终是激活的,即直到该过程执行Exitsub、Exit函数、Exit属性、EndSub、End函数或End属性语句时,错误捕获才停止。尽管在任一时刻任一过程中只能激活一个错误捕获,但可建立几个选择的错误捕获并在不同的时刻激活不同的错误捕获程序第9章程序调试与错误处理
本文标题:程序调试与错误处理
链接地址:https://www.777doc.com/doc-6491526 .html