2023年12月18日发(作者:)

Err 对象及错误处理

VB 程序在运行过程中,如果出现错误,错误编号和信息就保存在 Err 对象中。如果不对产生的错误进行处理,会弹出错误对话框,然后程序会异常终止。

本人原创,转载请注明来源:/100bd/blog/item/

Err 对象

一、Err 的属性

?Number :错误编号,是 Err 对象的缺省属性。 即 Err 等同于 。

从对象返回用户自定义的错误时,把被选作错误代码的数与 vbObjectError

常数相加,

并由此设置 。例如,用下列代码返回作为错误代码的数字 1051:

vbObjectError + 1051

?Description :返回或设置与错误相关联的描述性字符串。等同于函数 Error

[(errornumber) ]

在生成用户自定义的错误时,将有关此错误的一个简短陈述指定给

Description 属性。

如果 Description 未填入数据,而且 Number 的值与 Visual Basic 运行时错误一致,

那么在生成错误时,将 Error 函数返回的字符串放置在 Description 中。

?HelpContext :帮助文件中的主题的上下文 ID

?HelpFile :帮助文件的完整限定路径

?HelpContextID :联机帮助文件中一个主题的上下文 ID

?LastDLLError :返回因调用动态链接库 (DLL) 而产生的系统错误号。只读。

?Number :返回或设置表示错误的数值编号

?Source返回或设置一个字符串表达式,指明最初生成错误的对象或应用程序的名称。

或当前 Visual Basic 的工程名称。

二、Err 的方法

?Clear:清除 Err 对象的所有属性设置,明确设置。

每当执行下列语句时就会自动调用 Clear 方法:

1 任意类型的 Resume 语句。

2 Exit Sub, Exit Function, Exit Property

3 任何 On Error 语句。

?Raise number [, source, description, helpfile, helpcontext ]

产生运行时错误,参数依次为:错误号,错误源,错误信息,帮助文件,上下文 ID

参数设置:

number:Long类型,0-65535。用户自定义错误号为:vbObjectError + n

source:String 类型,出现错误的对象源字符串,为产生错误的对象或应用程序命名。当设置对象的这一属性时,要使用窗体 。如果没有指定 source,则使用当前 Visual Basic 工程的程序设计 ID。

Description String 类型,描述错误的字符串信息。如果没有指定,则检查

Number 的值。如果可以将错误映射成 Visual Basic 运行时错误代码,则将

Error 函数返回的字符串作为Description 使用。如果没有与 Number 对应的

Visual Basic 错误,则设置为:应用程序定义的错误或对象定义的错误。

helpfile :String 类型,Microsoft Windows 帮助文件的完整限定的路径,在帮助文件中可以找到有关错误的帮助信息。如果没有指定,则 Visual Basic

会使用 Visual Basic 帮助文件的完整限定的驱动器、路径和文件名。

helpcontext:String 类型,识别 helpfile 内的标题的上下文 ID,而

helpfile 提供有助于了解错误的描述。如果省略,则使用处理有关错误的

Visual Basic 帮助文件的上下文 ID,该 ID 与 Number 属性对应。

语句及实例

?Error [(errornumber)](函数) 返回对应于已知错误号的错误信息。(等同于Err属性 ption)

如果省略 errornumber,就会返回与最近一次运行时错误对应的消息。

如果没有发生运行时错误,或者 errornumber 是 0,则 Error 返回一个长度为零的字符串 ("")。

?Error errornumber (语句) 模拟第 errornumber 号错误的发生。

?On Error GoTo line 转到 line 执行错误处理语句(line 参数可以是任何行标签或行号)

?On Error Resume Next 忽略所有错误,从发生错误的语句的下一语句继续运行。

?On Error GoTo 0 禁止当前过程中任何已启动的错误处理程序。

注:发生错误之后,按本过程、上一调用过程、再上一调用过程……的顺序,直到找到一个被允许的但不是活动的错误处理程序为止,在此对错误进行处理。

处理了错误后,在当前过程中就会从 Resume 语句指定的位置恢复运行。如果没有找到被允许而且不活动的错误处理语句,程序会异常结束。

?Resume [ 0 ] 返回到出错语句,再次执行。

如果错误和错误处理程序出现在同一个过程中,则从产生错误的语句恢复运行。

如果错误出现在被调用的过程中,则从最近一次调用包含错误处理程序的过程的语句处恢复运行。

?Resume Next 返回到出错语句下一句

如果错误和错误处理程序出现在同一个程序中,则从紧随产生错误的语句的下个语句恢复运行。

如果错误发生在被调用的过程中,则对最后一次调用包含错误处理程序的过程的语句(或 On Error Resume Next 语句),从紧随该语句之后的语句处恢复运行。

?Resume line 转到line 处恢复运行

注:在错误处理程序之外的任何地方使用 Resume 语句都会导致错误发生。

Resume、Exit Sub、Exit Function 或 Exit Property 都可以关闭错误处理的活动状态。

例子1:

Private Sub Command1_Click()

On Error GoTo Cuo

S = 7 / 0 '这是出错语句

Exit Sub

Cuo:

MsgBox "错误 " & & " 号:" & Error, vbInformation

'或

'MsgBox "错误 " & & " 号:" & ption, vbInformation

End Sub

例子2:

Private Sub Command1_Click()

On Error GoTo Cuo

Error 11 '模拟 11 号错误的发生

Exit Sub

Cuo:

MsgBox "错误 " & & " 号:" & ption, vbInformation

End Sub

例子3:

Private Sub Command1_Click()

Dim nStr As String

On Error Resume Next '设置错误处理

'这是出错语句

If <> 0 Then

MsgBox "错误 " & & " 号:" & ption,

vbInformation

'[Exit Sub]

End If

'清除 Err 对象的所有属性设置

Error(61) '在窗体显示第 61 号错误信息

Error 61 '语句 人为设置第 61 号错误

' 被用来生成运行时错误,并可用来代替 Error 语句,提供更丰富的信息。

vbObjectError + 27, "", "我设置的错误信息",

"c:", 2324

If <> 0 Then

nStr = "错误 " & & " 号:"

nStr = nStr & vbCrLf & "错误信息:" & ption

nStr = nStr & vbCrLf & "帮助文件:" & le

nStr = nStr & vbCrLf & "帮助上下文 ID:" & ntext

MsgBox nStr, vbInformation

End If

End Sub