Predmet Err (VBA)

Vsebina
Kazalo 🔎︎

# Predmet Err [VBA]

Uporabite predmet VBA Err za javljanje oz. ravnanje z napakami pri izvajanju.

Err je vgrajeni globalni predmet VBA, ki omogoča:

- javljanje vnaprej določene napake Basic;

- javljanje uporabniško določenih izjem;

- poimenovanje podprograma, kjer je prišlo do napake;

- opis napake in možnih rešitev.

To konstanto, funkcijo ali predmet omogočimo z ukazom Option VBASupport 1, ki ga moramo vstaviti pred izvedljivo programsko kodo v modulu.

Predmet VBA Err ima naslednje lastnosti in metode:

## Lastnosti

             Err.Description As String

Lastnost Description podaja naravo napake. Description podrobno oriše različne razloge, ki bi lahko povzročili napako. Idealno ponuja več možnih ukrepov, ki lahko pomagajo razrešiti težavo in preprečiti njeno ponovno pojavljanje. Njen ekvivalent v Basicu je funkcija Error za vnaprej določene napake LibreOfficeDev.

             Err.Number As Long

Koda napake, povezana z napako. Privzeta lastnost predmeta Err je Number. Ekvivalent v LibreOfficeDev Basic je funkcija Err.

             Err.Source As String

Source nakazuje ime rutine, ki povzroča napako. Source pride v poštev pri uporabniško določenih napakah.

## Metode

             Err.Clear()

Ponastavi opis, Erl, številko in vir trenutne napake. Ekvivalent v LibreOfficeDev Basic je ukaz Resume.

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

Javi uporabniško določene napake ali vnaprej določene napake. Ekvivalent v LibreOfficeDev Basic je ukaz Error.

### Parametri

Število: uporabniško določena ali vnaprej določena koda napake, ki bo javljena.

Kode napake med 0 in 2000 so rezervirane za LibreOfficeDev Basic. Uporabniško določene napake se lahko začnejo z višjimi vrednostmi, da se preprečijo spori z bodočim razvojem LibreOfficeDev Basic.

Vir: ime rutine, ki javlja napako. Priporočeno je ime v obliki »mojaKnjižnica.mojModul.mojaProc«.

Opis: opis problema, ki pripelje do ustavitve tekočega procesa, ki ga spremljajo različni razlogi, ki bi lahko to povzročili. Priporočen je podroben niz možnih dejanj, ki lahko pomagajo odpraviti težavo.

### Primer:

             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:="To je načrtovana, uporabniško določena napaka ..."
                 Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
                 Exit Sub
             AlertAndExecNext:
                 errTitle = "Napaka "& Err &" v vrstici "& Erl &" v "& Err.Source
                 MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
                 Resume Next
             End Sub

## Izjema ClassModule

Kratek razredni modul ClassModule, ki zaobjame predmet VBA Err, lahko razširja lastnosti in metode Err za standardne module LibreOfficeDev 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

## Primer

             Function Exc As Object
                 Exc = New Exception
             End Function

             Sub aRoutine
             try:
                 On Local Error GoTo catch:
                 Exc.Raise(4096, "myLib.myModule.aRoutine", _
                     "Večvrstični opis te uporabniško določene izjeme")
                 ' vaša koda sodi sem ...
             finally:
                 Exit Sub
             catch:
                 errTitle = "Napaka "& Exc.Number &" v vrstici "& Erl &" v "& Exc.Source
                 MsgBox Exc.Description, MB_ICONSTOP, errTitle
                 Resume finally
             End Sub

Ukaz Error ali razredni modul, podoben Exception, lahko uporabite na enak način, pri čemer slednji prinaša dodatne funkcionalnosti.

Podobne teme

Funkcije za ravnanje z napakami

Ukaz Option ClassModule

Ukaz Option VBASupport

Storitev ScriptForge.Exception