序调 错误处理
与
第9章程序调试与错误处理 程序调试的主要任务:查找程序的错误和排除错误 本章主要内容 VB程序中的错误类型 程序工作模式 程序调试 错误处理 ★
程序调试的主要任务:查找程序的错误和排除错误 本章主要内容 VB 错误处理 第9章 程序调试与错误处理
91VB程序中的錯误类型 类错误类型:编译错误,逻辑错误和运行错误 1.编译错误 编译错误是指在程序编译过程中出现的错误。通常是 由于不正确书写代码而产生的。 例如:关键字写错,遗漏标点符号,括号不匹配等。 较为容易。ⅤB提供了自动语法检查功能,能指出并显 示这些错误,帮助用户纠正语法错误。 例子: Foor t=1To100 ★
三类错误类型:编译错误,逻辑错误和运行错误 1. 编译错误 编译错误是指在程序编译过程中出现的错误。通常是 由于不正确书写代码而产生的。 例如:关键字写错,遗漏标点符号,括号不匹配等。 较为容易。VB提供了自动语法检查功能,能指出并显 示这些错误,帮助用户纠正语法错误。 例子: Foor t = 1 To 100 9.1 VB程序中的错误类型
2.运行错误 运行时的错误是指应用程序在运行期间执行了非法操作 所发生的错误 例如,除法运算中除数为零,访问文件时文件夹或文 件找不到等。这种错误只有在程序运行时才能被发现。 举例(“下标越界”) Private Sub Form Load Dim D(20)As Integer, k As Integer For kel To 30 D(k)=k*K Next k End sub ★
2. 运行错误 运行时的错误是指应用程序在运行期间执行了非法操作 所发生的错误。 例如,除法运算中除数为零,访问文件时文件夹或文 件找不到等。这种错误只有在程序运行时才能被发现。 举例(“下标越界”): Private Sub Form_Load() Dim D(20) As Integer, k As Integer For k=1 To 30 D(k)=k*K Next k End Sub
3.逻辑错误 逻辑错误使程序运行时得不到预期的结果。这种程序没有 语法错误,也能运行,但却得不到正确的结果。 例如,在一个算术表达式中,把乘号“*”写成了加号 条件语句的条件写错,循环次数计算错误等 例如,要求10!,若采用: Private Sub Form Load Dim t As Integer For j=1 To 10 Next i Show Print t End sub 运行程序时输出的结果是0 通常,调试程序过程中所花的大部分时间和精力都在逻辑 错误上
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 通常,调试程序过程中所花的大部分时间和精力都在逻辑 错误上
9.2程序工作模式 三种工作模式:设计模式、运行模式和中断模式 1.设计模式 在设计模式下,可以建立应用程序的用户界面,设置控 件的属性,编写程序代码等 2.运行模式 在运行模式下,可以测试程序的运行结果,可以与应用 程序对话,还可以查看程序代码,但不能修改程序 3.中断模式 在中断模式下,可以利用各种调试手段检查或更改某些 变量或表达式的值,或者在断点附近单步执行程序,以便发 现错误或改正错误
三种工作模式:设计模式、运行模式和中断模式 1.设计模式 在设计模式下,可以建立应用程序的用户界面,设置控 件的属性,编写程序代码等 2. 运行模式 在运行模式下,可以测试程序的运行结果,可以与应用 程序对话,还可以查看程序代码,但不能修改程序 3. 中断模式 在中断模式下,可以利用各种调试手段检查或更改某些 变量或表达式的值,或者在断点附近单步执行程序,以便发 现错误或改正错误 9.2 程序工作模式
进入中断模式的方法: (1)在代码中插入Sop语句; (2)在代码窗口中设置断点用菜单命令); (3)在代码窗口中设置断点(鼠标操作); (4)在程序运行时强制“中断”; (5)当程序运行出现错误。 当检查调试通过后,需要清除断点 ★
进入中断模式的方法: (1)在代码中插入Stop语句; (2)在代码窗口中设置断点(用菜单命令); (3)在代码窗口中设置断点(鼠标操作); (4)在程序运行时强制“中断”; (5)当程序运行出现错误。 当检查调试通过后,需要清除断点
工程1-Form1Code) 回区 Co■and1 lick Private Sub commandl_click n=-1 s= Text1. Text 取字符串 Fori=1T0Len(s)按顺序逐个字符岁断 Ift〈"0"rt"9"Thn数 lid(s,,1)取 k=0 非数字,置k=0 E SE If k=0 Then n=n+1‘指向列表框的下一 ★
9.3程序调试 程序调试一般包括静态检查和动态检查 93.1静态检查与动态检查 静态检查程序的基本方法是逐行逐句地读程序,弄清楚每 条语句的作用,预见每条语句和模块的执行结果,判断是否与 预期结果相一致,这就是静态检查,也称人工检査 静态检查无误后,就可以进行更有效的动态检查。通过上 机调试来发现错误称为动态检查 动态检查的基本方法是输入一组典型的数据来运行程序。 程序对这些数据处理结果应是已知的,通过运行后实际结果和 预想结果相比较,可以判断程序的正确性
程序调试一般包括静态检查和动态检查 9.3.1 静态检查与动态检查 静态检查程序的基本方法是逐行逐句地读程序,弄清楚每 条语句的作用,预见每条语句和模块的执行结果,判断是否与 预期结果相一致,这就是静态检查,也称人工检查。 静态检查无误后,就可以进行更有效的动态检查。通过上 机调试来发现错误称为动态检查。 动态检查的基本方法是输入一组典型的数据来运行程序。 程序对这些数据处理结果应是已知的,通过运行后实际结果和 预想结果相比较,可以判断程序的正确性 9.3 程序调试
例如,为了检验求解一元二次方程ax2+bx+c=0的程序(见第 四章例45)是否正确,我们可以输入以下四组a,b,c的数值 第一组:0,1,1预期结果:显示“不是二次方程” 第二组:1,-2,1预期结果:x1=1,x2=1(两个相等实根) 第三组:1,1,-2预期结果:x1=1,x2=2(两个不等实根) 第四组:1,2,2预期结果:x1=1+i,x2=1-(两个共轭复根) 动态检查中,通常在一些敏感点处设置断点,检查一些变 量或表达式的值
例如,为了检验求解一元二次方程ax2+bx+c=0的程序(见第 四章例4.5)是否正确,我们可以输入以下四组a,b,c的数值: 第一组:0,1,1 第二组:1,-2,1 预期结果:x1=1,x2=1(两个相等实根) 第三组:1,1,-2 预期结果:x1=1,x2=-2(两个不等实根) 第四组:1,2,2 预期结果:x1=-1+i, x2=-1-i(两个共轭复根) 动态检查中,通常在一些敏感点处设置断点,检查一些变 量或表达式的值