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 + 513
свойству Number
.
- Source
- Object
Необязательный элемент. Выражение типа String
, содержащее имя объекта или приложения, вызвавшего ошибку. При задании этого свойства для объекта используйте форму project
.class
. Если Source
не указан, используется идентификатор процесса текущего проекта Visual Basic.
- Description
- Object
Необязательный элемент. Выражение типа String
, описывающее ошибку. Если это значение не задано, то проверяется значение свойства Number
. Если данное значение может быть сопоставлено с кодом ошибки во время выполнения Visual Basic, то в качестве свойства Error
используется строка, возвращаемая функцией Description
. Если не существует ошибки Visual Basic, соответствующей свойству Number
, то используется сообщение "Application-defined or object-defined error" ("Ошибка, определенная приложением или объектом").
- HelpFile
- Object
Необязательный элемент. Полный путь к файлу справки, в котором может содержаться справка о данной ошибке. Если данный аргумент не указан, то используется полный путь (содержащий имя устройства, путь и имя файла) к файлу справки Visual Basic.
- HelpContext
- Object
Необязательный элемент. Идентификатор контекста, определяющий для данной ошибки раздел справки в файле HelpFile
. Если данный параметр опущен, то используется идентификатор контекста файла справки Visual Basic, соответствующий свойству Number
.
Примеры
В этом примере метод объекта Raise
используется Err
для создания ошибки в функции, написанной на Языке 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
, можно ссылаться на справку по ошибке в интернете и т. д.