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

Source
Object

選擇性。 String 運算式,可為產生錯誤的物件或應用程式命名。 設定物件的這個屬性時,請使用 格式 projectclass。 如果未指定 Source,則會使用目前 Visual Basic 專案的處理序 ID。

Description
Object

選擇性。 描述錯誤的 String 運算式。 如果未指定,則會檢查 Number 屬性中的值。 如果它可以對應到 Visual Basic 執行階段錯誤碼,則 Error 函式將傳回的字串會當成 Description 屬性使用。 如果沒有任何 Visual Basic 錯誤對應到 Number 屬性,則會使用「應用程式定義或物件定義的錯誤」訊息。

HelpFile
Object

選擇性。 可以找到與這個錯誤有關的說明檔之完整路徑。 如果未指定,則 Visual Basic 會使用 Visual Basic 說明檔的完整磁碟機、路徑和檔名。

HelpContext
Object

選擇性。 可識別 HelpFile 中提供之錯誤說明的主題代碼。 如果省略,則會使用對應到 Number 屬性的錯誤之 Visual Basic 說明檔主題代碼 (如果存在的話)。

範例

這個範例會 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 指定產生錯誤的來源、參考錯誤的在線說明等等。

適用於

另請參閱