ErrObject.Raise(Int32, Object, Object, Object, Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
生成一个运行时错误;可以替代 Error
语句使用。
public void Raise (int Number, object? Source = default, object? Description = default, object? HelpFile = default, object? HelpContext = default);
public void Raise (int Number, object Source = default, object Description = default, object HelpFile = default, object HelpContext = default);
member this.Raise : int * obj * obj * obj * obj -> unit
Public Sub Raise (Number As Integer, Optional Source As Object = Nothing, Optional Description As Object = Nothing, Optional HelpFile As Object = Nothing, Optional HelpContext As Object = Nothing)
参数
- Number
- Int32
必需。 标识错误本质的 Long
整数。 Visual Basic 错误处于 0 到 65535 的范围内:范围 0 到 512 保留用于系统错误,范围 513 到 65535 则用于用户定义的错误。 当在类模块中将 Number
属性设置为您自己的错误代码时,将错误代码号添加到 vbObjectError
常数。 例如,若要生成错误号 513,请将 Number
分配给 vbObjectError + 513
属性。
- Source
- Object
可选。 String
表达式,用于命名生成错误的对象或应用程序。 为 对象设置此属性时,请使用 窗体 project
。class
。 如果未指定 Source
,则使用当前 Visual Basic 项目的进程 ID。
- Description
- Object
可选。 描述错误的 String
表达式。 如果未指定,则检查 Number
属性值。 如果它可以映射到 Visual Basic 运行时错误代码,则将 Error
函数要返回的字符串用作 Description
属性。 如果没有对应于 Number
属性的 Visual Basic 错误,则使用"应用程序定义的错误或对象定义的错误"消息。
- HelpFile
- Object
可选。 帮助文件的完全限定路径,在该文件中可找到有关此错误的帮助信息。 如果未指定该参数,则 Visual Basic 使用 Visual Basic 帮助文件的完全限定的驱动器、路径和文件名。
- HelpContext
- Object
可选。 上下文 ID,用于标识 HelpFile
中提供有关错误的帮助主题。 如果省略该参数,则使用与 Number
属性对应的错误的 Visual Basic 帮助文件上下文 ID(如果存在)。
示例
此示例使用 Err
对象的 Raise
方法在用 Visual Basic 编写的函数中生成错误。 调用函数可以捕获错误,并使用消息框将其报告给用户。
Module Module1
Const WidthErrorNumber As Integer = 1000
Const WidthHelpOffset As Object = 100
Sub Main()
CallingProcedure()
End Sub
Sub TestWidth(ByVal width As Integer)
If width > 1000 Then
' Replace HelpFile.hlp with the full path to an appropriate
' help file for the error. Notice that you add the error
' number you want to use to the vbObjectError constant.
' This assures that it will not conflict with a Visual
' Basic error.
Err.Raise(vbObjectError + WidthErrorNumber, "ConsoleApplication1.Module1.TestWidth",
"Width must be less than 1000.", "HelpFile.hlp", WidthHelpOffset)
End If
End Sub
Sub CallingProcedure()
Try
' The error is raised in TestWidth.
TestWidth(2000)
Catch ex As Exception
' The Err object can access a number of pieces of
' information about the error.
Console.WriteLine("Information available from Err object:")
Console.WriteLine(Err.Number)
Console.WriteLine(Err.Description)
Console.WriteLine(Err.Source)
Console.WriteLine(Err.HelpFile)
Console.WriteLine(Err.HelpContext)
Console.WriteLine(Err.GetException)
Console.WriteLine(vbCrLf & "Information available from Exception object:")
Console.WriteLine(ex.Message)
Console.WriteLine(ex.ToString)
Err.Clear()
End Try
End Sub
End Module
' The example produces the following output:
' Information available from Err object:
' -2147220504
' Width must be less than 1000.
' ConsoleApplication1.Module1.TestWidth
' HelpFile.hlp
' 100
' System.Exception: Width must be less than 1000.
' at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object
' Description, Object HelpFile, Object HelpContext)
' at ConsoleApplication1.Module1.TestWidth(Int32 width) in C:\Users\example\App
' Data\Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 17
' at ConsoleApplication1.Module1.CallingProcedure() in C:\Users\example\AppData
' \Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 25
'
' Information available from Exception object:
' Width must be less than 1000.
' System.Exception: Width must be less than 1000.
' at Microsoft.VisualBasic.ErrObject.Raise(Int32 Number, Object Source, Object
' Description, Object HelpFile, Object HelpContext)
' at ConsoleApplication1.Module1.TestWidth(Int32 width) in C:\Users\example\App
' Data\Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 17
' at ConsoleApplication1.Module1.CallingProcedure() in C:\Users\example\AppData
' \Local\Temporary Projects\ConsoleApplication1\Module1.vb:line 25
注解
除 之外Raise
Number
的所有参数都是可选的。 如果省略可选参数,并且对象的属性设置 Err
包含尚未清除的值,则这些值将用作错误的值。
因为 对象 Err
提供的信息比使用 语句生成错误 Error
时更丰富, Raise
因此在编写类模块时生成错误非常有用。 例如,使用 Raise
方法时,可以在 属性中 Source
指定生成错误的源,可以引用错误的联机帮助,等等。