Obiekt Err VBA

Spis treści

# Obiekt Err [VBA]

Użyj obiektu VBA Err, aby zgłosić lub obsłużyć błędy w czasie wykonywania.

Err to wbudowany globalny obiekt VBA, który umożliwia:

- podnoszenie predefiniowanych błędów Basic

- zgłaszanie wyjątków zdefiniowanych przez użytkownika

- nazywanie procedury, która spowodowała błąd

- opisywanie błędu i możliwe rozwiązania

Ta stała, funkcja lub obiekt włączane są przez instrukcję Option VBASupport 1 umieszczoną w module przed programem wykonywalnym.

Obiekt VBA Err ma następujące właściwości i metody:

## Właściwości

             Err.Description As String

Właściwość Description podaje charakter błędu. Description szczegółowo opisuje różne przyczyny, które mogą być przyczyną błędu. Idealnie, zapewnia wiele działań, które pomogą rozwiązać problem i zapobiec jego ponownemu wystąpieniu. Podstawowy alias to funkcja Error dla predefiniowanych błędów LibreOffice.

             Err.Number As Long

Kod błędu skojarzony z błędem. Domyślna właściwość obiektu Err to Number. Alias LibreOffice Basic to funkcja Err.

             Err.Source As String

Source wskazuje nazwę procedury, która generuje błąd. Source to opcja dla błędów zdefiniowanych przez użytkownika.

## Metody

             Err.Clear()

Resetuje opis, Erl, numer i właściwości źródła bieżącego błędu. Alias LibreOffice Basic to instrukcja Resume.

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

Zgłasza błędy zdefiniowane przez użytkownika lub błędy predefiniowane. Alias LibreOffice Basic to instrukcja Error.

### Parametry

Number: Zdefiniowany przez użytkownika lub wstępnie zdefiniowany kod błędu, który ma zostać zgłoszony.

Zakres kodów błędów 0-2000 jest zarezerwowany dla LibreOffice Basic. Błędy zdefiniowane przez użytkownika mogą zaczynać się od wyższych wartości, aby zapobiec kolizji z przyszłymi zmianami LibreOffice Basic.

Source: Nazwa procedury zgłaszającej błąd. Zalecana jest nazwa w postaci "myLibrary.myModule.myProc".

Description: Opis problemu prowadzącego do zatrzymania uruchomionego procesu wraz z różnymi przyczynami, które mogą go powodować. Zalecana jest szczegółowa lista możliwych działań, które mogą pomóc w rozwiązaniu problemu.

### Przykład:

             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:="Jest to zamierzony błąd zdefiniowany przez użytkownika…"
                 Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
                 Exit Sub
             AlertAndExecNext:
                 errTitle = "Error "& Err &" at line "& Erl &" in "& Err.Source
                 MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
                 Resume Next
             End Sub

## Exception ClassModule

Krótki ClassModule, który otacza obiekt VBA Err, może rozpowszechniać właściwości i metody Err dla standardowych modułów LibreOffice 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

## Przykład

             Function Exc As Object
                 Exc = New Exception
             End Function

             Sub aRoutine
             try:
                 On Local Error GoTo catch:
                 Exc.Raise(4096, "myLib.myModule.aRoutine", _
                     "Dowolny wielowierszowy opis tego wyjątku zdefiniowanego przez użytkownika")
                 ' miejsce na niestandardowy kod…
             finally:
                 Exit Sub
             catch:
                 errTitle = "Error "& Exc.Number &" at line "& Erl &" in "& Exc.Source
                 MsgBox Exc.Description, MB_ICONSTOP, errTitle
                 Resume finally
             End Sub

Instrukcja Error lub moduł klasy podobny do Exception mogą być używane zamiennie, podczas gdy ten drugi dodaje dodatkowe funkcje.

Tematy pokrewne

Funkcje obsługi błędów

Instrukcja Option ClassModule

Instrukcja Option VBASupport

Usługa ScriptForge.Exception

Prosimy o wsparcie!