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);
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
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 產生錯誤的來源,並參考錯誤的線上說明,等等。