第九章  程序调试与错误处理
双击滚屏  关闭窗口

 

9.4 错误处理

  9.4.1 错误处理的步骤
  9.4.2 Err 对象

  9.4.3 捕获错误语句
  9.4.4 退出错误处理语句


  对于某些可预见的错误,可以利用 VB 的错误处理程序捕获它,对其进行适当的处理,并使程序继续执行。这样就能够使开发的软件具有更强的适应性。

9.4.1 错误处理的步骤

(1) 利用 Err 对象记录错误的类型、出错原因等。
(2) 强制转移到用户自编的 “ 错误处理程序段 ” 的入口。
(3) 在 “ 错误处理程序段 ” 内,根据具体错误进行处理,如果问题有解决方法,则在处理后返回原程序某处继续执行,否则,停止程序执行

9.4.2 Err 对象

Err 对象是全局性的固有对象,用来保存最新的运行时错误信息,其属性由错误生成者设置
1. 主要属性
(1) Number 属性:数值。范围为 0 ~ 65535 ,保存错误号
(2) Source 属性:字符串。指明错误产生的对象或应用程序的名称

(3) Description 属性:字符串。用于记录简短的错误信息描述

2. 常用方法
(1) Clear 方法:用于清除 Err 对象的当前属性值。
(2) Raise 方法:产生错误,用于调试错误处理程序段。

例如,执行语句 Err.Raise 55 将产生 55 号运行时错误,即 “ 文件已打开 ” 错误

9.4.3 捕获错误语句 (On Error)

使用 On Error 语句可以捕获错误,其语法格式如下:
On Error 标号
通常,该语句放置在过程的开始位置。在程序运行过程中,当该语句后面的代码出错时,则程序就会自动跳转到标号所指定的程序行去运行

标号所指示的程序行通常为错误处理程序段的开始行

一个使用错误处理的示例:
On Error GoTo ErrLine ‘ 以后出错时转移至 ErrLine

. . .
ErrLi : ‘ 标号
. . .
Resume ‘ 返回语句

9.4.4 退出错误处理语句 (Resume)

当指定的错误处理完成后,应该控制程序返回到合适的位置继续执行。

返回语句 Resume 有三种用法:
(1)Resume [0] :程序返回到出错语句处继续执行。
(2)Resume Next :程序返回到出错语句的下一语句。
(3)Resume 标号:程序返回到标号处继续执行。

例 9.3 错误处理程序示例

输入某个数,求该数的平方根。当用户输入负数时,使用 On Error...Resume 进行处理

Private Sub Form_Load()

Dim x As Single, y As Single, i As String

On Error GoTo errln ' 以下出错时转移到 errln

Show : i = "" ‘i 为实数标记

x = Val(InputBox(" 请输入一个数 "))

y=Sqr(x) 'x 为负数时会出错

Print y; i : Exit Sub ‘ 显示及退出过程

errln: ' 标号

If Err.Number = 5 Then ' 本错误的错误码为 5

x = -x ' 转换为正数

i = "i" ' 复数标记

Resume ' 返回

Else ' 其他错误处理

MsgBox (" 错误发生在 " & Err.Source & ", 代码为 " & _

Err.Number & ", 即 " & Err.Description)

End

End If

End Sub

程序运行时,当用户输入一个正数时,则显示出该数的平方根;如果输入的是一个负数,则因求负数的平方根 ( 通过函数 Sqr()) 而出错,此时会跳转到错误处理程序段。

在错误处理程序段中,先判断错误码,若是 5( 即发生求负数的平方根的错误 ) ,则将该负数转换为正数,设置复数标记,然后执行 Resume 语句返回到原出错处继续执行。

如果发生的不是错误 5 ,则显示有关信息后强制结束

 
双击滚屏  关闭窗口
 
版权所有数学与信息科学学院