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);
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,將 指派 vbObjectError + 513Number 屬性。

Source
Object

Optional. String 表達式,命名產生錯誤的物件或應用程式。 在為物件設定此屬性時,請使用形式 project.class. 若未指定 Source,則使用目前Visual Basic專案的程序 ID。

Description
Object

Optional. String 描述錯誤的表達式。 若未指定,則會審查該物業的 Number 價值。 若能映射到Visual Basic執行時錯誤碼,則 Error 函式回傳的字串作為 Description 屬性。 若沒有與 Number 屬性對應的Visual Basic錯誤,則會使用「應用程式定義或物件定義錯誤」訊息。

HelpFile
Object

Optional. 可以找到針對此錯誤的說明檔案的完整限定路徑。 若未指定,Visual Basic 會使用完整限定的磁碟機、路徑與檔案名稱。

HelpContext
Object

Optional. 上下文識別碼(context 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

備註

除了Number所有參數外,其他都是Raise可選的。 如果你省略了可選參數,且物件的屬性設定 Err 中包含未清除的值,這些值就成為你錯誤的值。

因為這個 Err 物件提供的資訊比用 Error 陳述句產生錯誤更豐富,這 Raise 對於撰寫類別模組時產生錯誤非常有用。 例如,使用該 Raise 方法,可以在屬性中指定 Source 產生錯誤的來源,並參考錯誤的線上說明,等等。

適用於

另請參閱