第9章  调试与错误处理
一、问答题
1.请思考如何避免错误。
答:1) 事先精心设计应用程序,描述清楚相关事件以及代码响应每一事件的方法,为每一事件过程和每个普通过程都指定一个特点的、明确的目标。
2) 多加注释。如果用注释说明每个过程的目的,在以后分析代码时,能更深入地理解这些代码。
3)对过程中用到的每个变量或对象都应该在过程开始部分加以定义。
4)在应用程序中对变量和对象提出一种前后一致的命名方案。
2.请简要设计错误处理程序的三个步骤。
答:1)捕获错误,并强制程序跳转     
2)编写错误处理程序
3)退出错误处理程序
脚本发生错误怎么办3.简述常用的程序调试技巧。
答:1)事先做好备份;
2)分离受怀疑的程序;
3)缩小搜索范围;
4)使用MsgBox语句
4.简要说明VB程序调试的主要方法和工具。
答:VB 程序调试的主要方法:用编译器提示错误;使用调试工具来发现和改正错误;采用常用的调试技巧,如事先做好备份,分离受怀疑的程序,缩小搜索范围,使用MsgBox语句等。
主要工具:“调试”菜单下的“逐语句”、“逐过程”、“跳出”、“运行到光标处”、“添加监视”、“快速监视”、“切换断点”等子菜单项。
5.VB程序错误大体可分为哪几种,它们的含义是什么?
答:VB程序错误大体分为三种:编译错误、实时错误和语法错误。
编译错误是在编写程序时书写了有错误的语法的代码,导致VB编译器无法正确解释源代码而产生的错误,也称语法错误。实时错误是指在运行期间,一跳语句试图执行一条不可能执行的操作而产生的错误,也称运行时错误。逻辑错误是指程序的运行结果和程序员的设想有出入时产生的错误。
6.请说明 On Error GoTo 与On Error Resume Next 的区别。
答:On Error GoTo 行标识符语句:当发生错误时,使用该语句强制改变程序的执行方向。而On Error Resume Next 语句:当发生错误时,VB程序将忽略引发错误的语句,并继续执行下一条语句。
二、程序设计题
1.程序改错。以前面学到的冒泡排序算法为例,开发以下程序,请上机练习排除其中的错误。
调试结果:
Private Sub Command1_Click()
  Dim A(1 To 20) As Integer
  Dim c, j As Integer
  Dim T As String
  '随机生成一组数据
  For c = 1 To 20
    A(c) = Int(Rnd * 100)
  Next c
  '排序
  For c = 1 To 20
    For j = c + 1 To 20
      If A(c) > A(j) Then
        T = A(j)
        A(j) = A(c)
        A(c) = T    '将原来的A(j) = T修改为A(c)=T
      End If
    Next
  Next
  '在窗体上输出结果
  Cls
  For c = 1 To 20
    Print A(c)      ' 将原来的Print A(i)修改为Print A(c)
  Next c
End Sub
2.错误处理。按下图设计一除法程序,请使用On Error GoTo 语句对除法程序进行处理,当出现除数为0或其他异常情况时,使用MsgBox提示错误信息。
程序代码:
Private Sub Command1_Click()
  On Error GoTo ErrLB
  Text3.Text = Trim(Str(Val(Text1.Text) / Val(Text2.Text)))
  Exit Sub
ErrLB:
  Dim strMsg As String
  strMsg = "运算过程出现了如下错误:" + vbCr
  strMsg = strMsg + "错误号是:" + Trim(Str(Err.Number)) + vbCr
  strMsg = strMsg + "错误描述是:" + Err.Description
  MsgBox strMsg, vbQuestion + vbOKOnly, "错误提示"
  Text2.SetFocus
End Sub
Private Sub Command2_Click()
  Text1.Text = ""
  Text2.Text = ""
  Text3.Text = ""
End Sub