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,請指派 vbObjectError + 513
給 Number
屬性。
- Source
- Object
選擇性。 String
運算式,可為產生錯誤的物件或應用程式命名。 設定物件的這個屬性時,請使用 格式 project
。class
。 如果未指定 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
指定產生錯誤的來源、參考錯誤的在線說明等等。