Обект Err [VBA]

Обектът Err служи за генериране и обработка на грешки по време на изпълнение.

Err е вграден глобален обект на VBA, който позволява:

warning

Тази константа, функция или обект се разрешава с оператора Option VBASupport 1, поставен преди изпълнимия програмен код в модула.


Обектът Err на VBA има следните свойства и методи:

Свойства

Err.Description As String

Свойството Description описва естеството на грешката. В Description са изброени възможните причини за възникването на грешката. В идеалния случай то би трябвало да предлага няколко подхода за разрешаване на проблема и предотвратяване на повторната му поява. Негов псевдоним в Basic е функцията Error на Basic за предварително дефинираните грешки на Collabora Office.

Err.Number As Long

Кодът за грешка, съответстващ на грешката. Подразбираното свойство на обекта Err е Number. Псевдонимът в Collabora Office Basic е функцията Err.

Err.Source As String

Source указва името на подпрограмата, предизвикала грешката. Source е незадължително за дефинирани от потребителя грешки.

Методи

Err.Clear()

Нулира свойствата за описание, Erl, номер и източник на текущата грешка. Псевдонимът в Collabora Office Basic е операторът Resume.

Err.Raise(Number As Long, Optional source As String, Optional description As String)

Генерира потребителски или предварително дефинирани грешки. Псевдонимът в Collabora Office Basic е операторът Error.

Параметри

Number: дефиниран от потребителя или предварително дефиниран код на грешка, който да се генерира.

note

Диапазонът 0 – 2000 от кодове на грешки е запазен за Collabora Office Basic. Потребителските грешки може да започват от по-високи стойности, за да се предотврати конфликт с бъдещи разширения на Collabora Office Basic.


Source: името на подпрограмата, генерираща грешката. Препоръчва се име във вида „библиотека.модул.процедура“.

Description: описание на проблема, водещ до спиране на изпълнявания процес, придружено с възможните причини за възникването му. Препоръчва се подробен списък на възможните подходи за решаване на проблема.

Пример:

Option VBASupport 1

Sub ThrowErrors
    Dim aDesc As String : aDesc = Space(80)
    On Local Error GoTo AlertAndExecNext
    Err.Raise(91, "ThrowErrors", Error(91))
    Err.Raise 2020, Description:="Това е преднамерена дефинирана от потребителя грешка…"
    Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
    Exit Sub
AlertAndExecNext:
    errTitle = "Грешка "& Err &" на ред "& Erl &" в "& Err.Source
    MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
    Resume Next
End Sub

Модул на клас Exception

tip

Кратък модул на клас (ClassModule), който обвива обекта Err на VBA и може да разпространява свойства и методи на Err за стандартни модули на Collabora Office Basic.


Option ClassModule
Option VBASupport 1

Public Property Get Description As String
    Description = Err.Description
End Property
Public Property Get Number As Long
    Number = Err.Number
End Property
Public Property Get Source As String
    Source = Err.Source
End Property
Public Sub Clear
    Err.Clear
End Sub
Public Sub Raise( number As Long, Optional Source As String, Optional Description As String)
    Err.Raise number, Source, Description
End Sub

Пример

Function Exc As Object
    Exc = New Exception
End Function

Sub aRoutine
try:
    On Local Error GoTo catch:
    Exc.Raise(4096, "myLib.myModule.aRoutine", _
        "Описание на няколко реда за това дефинирано от потребителя изключение")
    ' място за вашия код
finally:
    Exit Sub
catch:
    errTitle = "Грешка "& Exc.Number &" на ред "& Erl &" в "& Exc.Source
    MsgBox Exc.Description, MB_ICONSTOP, errTitle
    Resume finally
End Sub
note

Операторът Error може да се използва като алтернатива на модул с клас, подобен на Exception, но последният предлага допълнителни възможности.


Моля, подкрепете ни!