《《Visual Basic程序设计教程(第3版)》第9章程序调试与公布发行》由会员分享,可在线阅读,更多相关《《Visual Basic程序设计教程(第3版)》第9章程序调试与公布发行(31页珍藏版)》请在金锄头文库上搜索。
1、Click to edit Master title style,Click to edit Master text style,Second level,Third level,Forth level,Fifth level,*,*,Click to edit Master title style,Click to edit Master text style,Second level,Third level,Forth level,Fifth level,*,*,Visual Basic程序设计教程(第3版),第,9,章 程序调试与公布发行,第,9,章 程序调试与公布发行,2,9.1 错误
2、类型和程序模式,9.2 程序调试,9.3 捕获错误及处理,9.4 程序发布,9.1,错误类型和程序模式,1,错误类型,编译错误,编译错误是指在程序编译过程中出现的错误。编译错误通常是由于不正确书写代码而产生的。,运行时的错误,运行时的错误是指应用程序在运行期间执行了非法操作所产生的错误。,逻辑错误,当应用程序未按预期方式执行时,就会产生逻辑错误。从语法角度来看,应用程序的代码是正确的,应用程序也可以执行,但却得不到正确的结果。,9.1,错误类型和程序模式,(,续,),2,应用程序的模式,设计模式,创建应用程序的大多数工作都是在设计模式下完成的。,运行模式,单击工具栏中的“启动”按钮或者选择“运
3、行”菜单中的“启动”选项,都可以进入运行模式。,中断模式,在中断模式下,由于变量和对象的属性值被保留下来,因此,能够分析应用程序的当前状态并修改程序代码,并且所有的调试工具都是在中断模式下运行的。,9.2,程序调试,9.2.1,程序调试方法,9.2.2,程序调试案例,程序调试方法,图,9.3,调试工具,程序调试方法,(,续,),(,1,)切换断点,通常,断点被设置在代码中被怀疑可能会出问题的区域。,(,2,)逐语句,逐语句执行就是一条语句一条语句地执行代码,通过查看应用程序的窗体或调试窗口来判断这条语句是否正确。,(,3,)逐过程,逐过程执行就是以整个函数或过程为一个整体,一次执行下去。,程序
4、调试方法,(,续,),(,4,)跳出,(,5,)本地窗口,(,6,)立即窗口,(,7,)监视窗口,(,8,)快速监视,(,9,)调用堆栈,程序调试案例,1.,程序调试案例要求,完成求15这5个数的阶乘,并且将这5个数的阶乘分别存放到数组a(1)a(5)的5个元素中。,程序调试案例分析,2.,程序调试案例分析,本程序中有函数调用,那就很可能会出现参数传递错误。,程序调试案例分析,(,续,),Private Sub Command1_Click(),Dim a(5)As Integer,Dim k,,,o As Integer,For k=1 To 5,a(k,)=,factor(k,),Next
5、,For o=1 To 5,Print a(0),Next,End Sub,程序调试案例分析,(,续,),Function factor,(,x As Integer,),As Integer,Dim,i,t,As Integer,t=1,For i=1 To x,t=t*i,Next,factor=t,End Function,程序调试案例分析,(,续,),(,3,)运行该程序,并单击“计算”按钮,结果如图,9.8,所示。,图,9.8,计算阶乘结果,程序调试案例分析,(,续,),从运行结果可以看出,结果是不正确的,阶乘值不应该是,0,值。在程序编译和运行过程中没有出现任何异常现象很显然这是一
6、个逻辑错误,那么错误究竟出现在什么地方呢?下面利用调试工具来查找。,首先,本程序中有函数调用,那就很可能会出现参数传递错误。在此采取如下步骤来检测参数传递是否发生错误。,程序调试案例分析,(,续,),(,1,)打开代码窗口设置断点。将断点设置在发生函数调用的语句。即将,a(k,)=,factor(k,),语句设置为断点位置(设置断点后的代码窗口样式见图,9.4,),(,2,)设置断点后,重新运行应用程序。单击“计算”按钮,程序在断点处中断运行,进入中断模式,如图,9.9,所示。,(,3,)打开调试工具栏、本地窗口和立即窗口,用于监视程序的运行,如图,9.10,所示。在打开的本地窗口中可以看到当
7、前过程中一些变量的值。,程序调试案例分析,(,续,),图,9.9,进入中断模式的代码窗口,程序调试案例分析,(,续,),(,4,)单击调试工具栏上的“逐语句”按钮,让程序逐句执行。,Visual Basic,中用黄颜色突出显示着当前执行的语句行,并在语句行左侧空白处用小箭头加以标识。,(,5,)当流程回到,Command1_Click(),中时,利用立即窗口显示一下,a(k,),的值。显示为,1,,结果正确。重复上述“逐语句”跟踪执行过程(如果认为,factor,函数绝对正确可改用“逐过程”方式跟踪)。,(,6,)经过上述跟踪检测,发现前面的语句、函数及参数没有错误。那么错误一定在,Click
8、,事件过程中的,For,语句中,也就是,Print a(0),语句,即将,o,写成了,0,。,程序调试案例分析,(,续,),图,9.10,调试窗口,9.3,捕获错误及处理,利用,Visual Basic 6.0,的错误处理程序捕获它,并对其进行适当的处理,这样就能够使开发的软件有更强的适应性。,Err,对象,1,Err,对象的常用属性,Number,属性,Source,属性,Description,属性,2,Err,对象的常用方法,Clear,方法,Raise,方法,例如,下面的语句将模拟产生驱动器无盘错误。,Err.Raise,71,,,project1,,,disk not ready,捕
9、获错误,在默认情况下,出现错误时,系统会显示出错信息,并终止运行。使用捕获错误可以获得这些错误信息,并调用指定代码处理错误,然后继续执行程序。,在,Visual Basic 6.0,中,使用,On Error,语句可以捕获错误,其语法结构为:,On Error Goto,标号,设计错误处理程序,1,设置错误捕获,使用,on Error,语句来激活捕获,并指引应用程序跳转到标记着错误处理例程开始的标号处。,2,编写错误处理程序,添加行标号、编写错误处理程序,3,退出处理程序,Resume,Resume Next,Resume,标号,设计错误处理程序,(,续,),例如,文件浏览程序中,设置文件没有
10、找到活文件名错误处理程序,代码如下:,Private Sub Command1_Click(),Dim,fname,As String,Dim num As Integer,Dim,str,As String,On Error,Goto,Err1 ,设置捕获错误,fname,=a:,test.dat,Print,dir(fname,),Exit Sub,设计错误处理程序,(,续,),Err1:,错误处理程序,If,Err.Number,=52 Then,文件未找到或文件名错,str,=,Err.Description,&=&,Err.Number,num=,MsgBox(str,Vbretry
11、conncel,),显示错误提示,If num=,Vbretry,Then,如果单击了,重试,按钮则返回到,Resume ,出错语句重新执行该语句,Else,Resume Next ,否则返回到出错语句的下一句,End If,End If,End Sub,9.4,程序发布,在创建,Visual Basic,应用程序后,若希望将该程序安装到其他计算机上或网络服务器上,独立运行,供大家使用,就必须对应用程序进行编译、打包、发布等一系列操作,将应用程序制作成安装程序。,编译应用程序,编译应用程序是制作安装程序的第一步。所谓编译程序就是将创建的应用程序以及它的工程文件合并成一个可执行文件。,打包应用程
12、序,所谓打包是指将应用程序文件包装为一个或多个可以放到适当位置的,.cap,文件(一种压缩文件)。,使用向导打包程序的步骤如下:,(,1,)启动向导,(,2,)选择需要打包的工程,发布应用程序,所谓发布应用程序是指将打包后的应用程序放置到某一媒体上,例如,软盘、光盘等。以便用户安装应用程序。,安装和卸载应用程序,1,安装应用程序,2,卸载应用程序,实训九 程序调试与错误处理,1,、利用,VB,程序调试工具对一个简单的累加运算程序进行调试。,设置断点。,添加监视表达式。,单步执行。,查看立即窗口。,实训九 程序调试与错误处理,(,续,),2,、编写一个具有基本错误处理功能的除法运算程序。,要求除以零时,程序提示“,0,作除数”。,要求类型不符合时,程序提示“出现非数字”。,其他错误提示其错误号及错误信息描述。,