ErrObject.Raise(Int32, Object, Object, Object, Object) 方法

定义

生成一个运行时错误;可以替代 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 表达式,用于命名生成错误的对象或应用程序。 为 对象设置此属性时,请使用 窗体 projectclass。 如果未指定 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

注解

除 之外RaiseNumber的所有参数都是可选的。 如果省略可选参数,并且对象的属性设置 Err 包含尚未清除的值,则这些值将用作错误的值。

因为 对象 Err 提供的信息比使用 语句生成错误 Error 时更丰富, Raise 因此在编写类模块时生成错误非常有用。 例如,使用 Raise 方法时,可以在 属性中 Source 指定生成错误的源,可以引用错误的联机帮助,等等。

适用于

另请参阅