我在这里学编程 进阶篇 共28页[1 2 3 4 5 6 7 >»<.. 最后一页]

  错误捕捉

   一个好的应用程序,不仅体现在它的功能强大与容易操作,还体现在它完善的错误处理能力。在编写程序时,要充分考虑到程序运行时可能会遇到的错误。例如,在做除法运算时,用户输入的除数可能为0;在执行读取软盘操作时,软盘里可能没有磁盘。

    当应用程序在VB环境中运行时,遇到错误将终止程序运行,返回到VB环境,当应用程序被编译成EXE文件,在WINDOWS环境中运行时,一旦发生错误,WINDOWS将终止应用程序的执行,并将控制权交还给WINDOWS系统,显然,这种处理方法不是所希望的。一般应用程序都会在运行时捕捉到错误,并且给出提示,以便让用户采取行动。

    在VB中,要增加应用程序的处理的能力,需要做以下两步工作:

    设置错误陷阱
    编写错误处理程序

    VB提供了On Error语句设置为错误陷阱,捕捉错误,On Error语句有3种形式:

On Error Goto语句标号:在发生运行错误时,转到语句标号所指定的程序块执行错误处理程序,指定的必须在同一过程中,错误处理程序的最后必须加上Resume,以告知返回位置。

On Error Resume Next:在发生运行错误时,忽然错误,转到发生错误的下一条语句继续运行。

On Error Goto 0:停止错误捕捉,有VB直接处理运行错误。

    Resume语句应放置在出错处理程序的最后,以便错误处理完毕后,指定程序下一步做什么。Resume也有3种形式。

Resume 标号:返回到标号指定的行继续执行,若标号为0,则表示终止程序执行。

Resume Next:跳过出错语句,返回到出错的下一条语句继续执行。

Resume:返回到出错语句处重新执行。

    在On Error语句捕捉到错误以后,Err对象的Number属性返回错误的代号,通过错误代号即可知道引发错误的原因了.在编写错误处理程序时,一般使用"If Err.Number"语句或“Select Case Err.Number"语句来判断错误的类型.

  VB提供的Error函数用语返回错误信息,其语法如下:
  Error(错误代号)

    例如:Form.Print.Error(11)
    语句将窗体上显示“除数为零”。

    这里编写一个用于计算两个数相除的小程序。如果用户输入的除数为零,会弹出消息框提示用户;如果没有输入除数或被除数,也会弹出消息框提示用户。

    在窗体上放置5个标签3个文本框和一个按钮控件,其中各对象的属性设置如下:

运行程序,输入被除数与除数,单击[结果]按钮,就会计算出它们的商。如果法输入的除数为零,则弹出如图所示的消息框,提示用户出错。 

Private Sub Command1_Click()
On Error GoTo ww '设置错误陷阱
Text3.Text = Text1.Text / Text2.Text
Exit Sub
'错误处理代码
ww:
If Err.Number = 11 Then
MsgBox "除数不能为零,请重新输入!", 16, "错误"
Else
MsgBox "出现其他错误!", 16, "错误"
End If
Resume Next
End Sub
 

运行程序,输入被除数和除数,单击结果计算我们的商。如果输入的除数是0弹出如图消息框,要求用户重新输入。

如果没有输入除数,则会弹出如图消息框,提示用户出错。

常用的错误极其说明

错误号 说明 错误号 说明
5 过程调用错误 55 文件已打开
6 溢出 57 设备I/O错误
7 内存超出 58 文件已经存在
9 下标越界 61 磁盘满
11 某数被0除 62 输入超过文件尾
13 类型不匹配 67 文件太多
28 超出栈空间 68 设备未准备好
35 子程序、过程未定义 71 磁盘未准备好
48 调用DLL时错误 75 路径/文件访问错误
49 错误DLL调用约定 76 路径找不到
51 内部错误 90 With-End With块错误
52 错误的文件名 91 对象变量为定义
53 文件找不到 92 循环未初始化
54 错误的文件模式 93 非法模式字符串

如何避免产生错误
如果在开始编写程序时,就使用良好的编程习惯,出错的几率会大大减少。在编写程序的时候坚持以下的原则:

    要坚持先定义后使用变量的原则。“Option Explicit”这个语句可以实现强制变量定义的功能。

    指明变量的类型。如果不说明其类型,VB将默认变量是变体型的,使用变体型变量是可以给编程者带来很大方便,但是也会带来增大内存占用、降低程序运行速度等弊端。

    编写自定义过程时,如果在过程只需要使用参数的值而无需改变参数,要在定义参数时加上“ByVal”关键字,。这样可以防止在过程中不小心改变了参数的值。

    不要假设数组的下界。在定义数组时,可以缺少定义数组的下界而只定义它的上界。数组下界的默认通常是0,但也可以通过“Option Rase”语句来改变,这就造成数组下界的不确定性,容易产生“下标越界”的错误。在定义数组时,最好同时说明其下界。

    避免在表达式中出现多种类型的数据。

    经常使用常量。如果在程序中的多处需要使用同一值时,最好能把它定义成常量,如果要修改时只要改变这个值即可。

    在连接字符串时使用“&”运算符。

我在这里学编程 进阶篇 共28页[1 2 3 4 5 6 7 >»<.. 最后一页]