Object Err VBA

Inhoud
Index 🔎︎

# Object Err [VBA]

Gebruik het object Err [VBA] om fouten te laten optreden en om fouten tijdens uitvoering af te handelen.

Met het interne globale object Err kunt u:

- voorgedefinieerde Basic-fouten laten optreden

- gebruikergedefinieerde uitzonderingen laten optreden

- de routine aangeven waarin de fout optreedt

- de fout beschrijven en de mogelijke oplossingen aangeven

Deze constante, functie of object, is ingeschakeld met de instructie Option VBASupport, geplaatst voor het uitvoerbare programmacode in een module.

Het VBA object Err heeft de volgende eigenschappen en methodes:

## Eigenschappen

             Err.Description As String

De eigenschap Description geeft de aard van de fout aan. Description beschrijft wat de oorzaken kunnen zijn van het optreden van de fout. Ideaal zou het zijn als er ook acties genoemd worden om het probleem te verhelpen en het opnieuw optreden te voorkomen. De Basic alias hiervoor de functie Error voor voorgedefinieerde fouten in LibreOfficeDev.

             Err.Number As Long

De foutcode die bij de fout hoort. De eigenschap in het object Err is hier standaard Number. De LibreOfficeDev Basic alias is de functie Err.

             Err.Source As String

Source geeft de naam aan van de routine waarin de fout is opgetreden. Source is een optie bij door gebruikers gedefinieerde fouten.

## Methoden

             Err.Clear()

Reset de description, Erl, number en source eigenschappen van de huidige fout. De LibreOfficeDev Basic alias is de instructie Resume.

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

Zorgt dat er een gebruikergedefinieerde fout of een vooraf gedefinieerde fout optreedt. Dit is gelijkwaardig aan de LibreOfficeDev Basic instructie Error.

### Parameters

Number: De gebruikergedefinieerde of vooraf gedefinieerde fout die moet optreden.

De foutcodes 0-2000 zijn gereserveerd voor LibreOfficeDev Basic. Als er door gebruikers fouten worden gedefinieerd dan moeten die een hogere foutcode krijgen dan 2000 om in de toekomst problemen met nieuwe uitbreidingen van LibreOfficeDev Basic te voorkomen.

Source: De naam van de routine waarin de fout is opgetreden dan wel aangemaakt. Aanbevolen wordt een naam als "myLibrary.myModule.myProc".

Description: Een beschrijving van de reden waarom de verwerking is gestopt, met de mogelijke oorzaken. We bevelen aan dat er ook een toelichting is met de acties die gedaan kunnen worden om de fout te voorkomen of om die op te lossen.

### Voorbeeld:

             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:="Dit is een fout die door een gebruiker van te voren is gedefinieerd …"
                 Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
                 Exit Sub
             AlertAndExecNext:
                 errTitle = "Fout "& Err &" op regel "& Erl &" in "& Err.Source
                 MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
                 Resume Next
             End Sub

## Exception ClassModule

Met de optie ClassModule, dat het VBA object Err omvat, kunnen de eigenschappen en methoden van Err gebruikt worden door de standaard LibreOfficeDev Basic modules.

             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

## Voorbeeld

             Function Exc As Object
                 Exc = New Exception
             End Function

             Sub aRoutine
             try:
                 On Local Error GoTo catch:
                 Exc.Raise(4096, "myLib.myModule.aRoutine", _
                     "Een beschrijving van mogelijk meerdere regels van deze door de gebruiker gedefinieerde exception")
                 ' hier komt uw code…
             finally:
                 Exit Sub
             catch:
                 errTitle = "Fout "& Exc.Number &" op regel "& Erl &" in "& Exc.Source
                 MsgBox Exc.Description, MB_ICONSTOP, errTitle
                 Resume finally
             End Sub

De instructie Error of een klassemodule als Exception kunnen door elkaar gebruikt worden, met de klassemodule heeft u wat meer mogelijkheden.

Verwante onderwerpen

Functies voor foutafhandeling

Instructie Option ClassModule

Instructie Option VBASupport

service ScriptForge.Exception