通过生成错误测试错误处理

当测试应用程序,或想要处理等价于 Visual Basic 运行时错误的具体条件时,对错误进行模拟是非常有用的。例如,用一个定义在外部应用程序中的对象编写模块并希望应用程序的其余部分把该对象返回的错误作为实际的 Visual Basic 错误来处理。

为测试所有可能发生的错误,可能需要在代码中生成一些错误。在代码中可用 Raise 方法生成错误:

object .Raise argumentlist

通常,object 参数是 Err,它是 Visual Basic 定义的全局错误对象。argumentlist 参数是命名的参数列表,这些参数可通过方法传递。在 Errors.vbp 示例应用程序中,VerifyFile 过程在错误处理程序中使用以下代码重新生成当前错误:

Err.Raise Number:=intErrNum

在这种情况下,intErrNum 是一变量,包含触发错误处理程序的错误号。当代码到达 Resume 语句时,要调用 Err 对象的 Clear 方法。在调用堆栈上,为了将代码后退传递到上一过程,有必要重新生成错误。

通过为错误提供错误代码也可以模拟任何 Visual Basic 的运行时错误。

Err.Raise Number:=71      ' 模拟“磁盘未准备”错误。

定义自己的错误

有时,除了 Visual Basic 定义的错误,可能还想定义一些错误。例如,当载波信号失落时,依靠调制解调器连接的应用程序可能会产生错误。如果想要生成并捕获自己的错误,则应将错误号添加到 vbObjectError 常数中。

vbObjectError 常数保留的错误号在这样一个范围内,该范围从其自身偏移量到其偏移量 + 512。使用高于这个范围的号数将确保错误号不会与 Visual Basic 将来的版本或其它 Microsoft Basic 产品相冲突。ActiveX 控件也可定义它们自己的错误号。为避免冲突,请参阅为应用程序所用控件提供的文档。

为定义自己的错误数,将常数添加到模块的声明部分。

'错误常数
Const gLostCarrier = 1 + vbObjectError + 512
Const gNoDialTone = 2 + vbObjectError + 512

然后,当处理任何固定错误时可使用 Raise 方法。在这种情况下,Err 对象的描述属性将返回标准描述— “应用程序定义的错误或对象定义的错误”。为描述自己的错误,需将描述作为参数添加到 Raise 方法中。

详细信息 为了更多了解有关生成自己的错误,请参阅“Raise 方法”。