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


发布评论