Obsah

# Objekt Err [VBA]

Objekt VBA Err se používá k vyvolávání nebo zpracovávání chyb při běhu.

Err je vestavěný globální objekt VBA, který umožňuje:

- vyvolat předem definované chyby Basicu

- vyvolat uživatelem definované výjimky

- určit program, v němž chyba vznikla

- popsat chybu a možná řešení

Tato konstanta, funkce nebo objekt se povoluje příkazem Option VBASupport 1, který je umístěn v modulu před spustitelným programem.

Objekt VBA Err má následující vlastnosti a metody:

## Vlastnosti

             Err.Description As String

Vlastnost Description udává charakter chyby. Obsahuje podrobnosti o příčinách, které mohly chyby způsobit. V ideálním případě nabízí kroky, které problém vyřeší a zabrání jeho zopakování. V jazyce Basic je jejím aliasem pro předem definované chyby LibreOffice funkce Error.

             Err.Number As Long

Výchozí vlastností objektu Err je Number. Jedná se o kód odpovídající chybě. V jazyce LibreOffice Basic je jejím aliasem funkce Err.

             Err.Source As String

Source označuje název programu, v němž chyba vznikla. Source je možné určit u chyb definovaných uživatelem.

## Metody

             Err.Clear()

Vymaže u aktuální chyby vlastnosti Description, Erl, Number a Source. V jazyce LibreOffice Basic je jejím aliasem příkaz Resume.

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

Vyvolá uživatelem definovanou nebo předem definovanou chybu. V jazyce LibreOffice Basic je jejím aliasem příkaz Error.

### Parametry

Number: Uživatelem definovaný nebo předem definovaný kód chyby, která se má vyvolat.

Rozsah chybových kódů 0–2000 je vyhrazen pro LibreOffice Basic. Aby se zabránilo konfliktu během budoucího vývoje jazyka, mohou mít uživatelem definované chyby pouze větší hodnoty.

Source: Název programu, v němž byla chyba vyvolána. Doporučuje se název ve tvaru "mojeKnihovna.mujModul.mojeProcedura".

Description: Popis problému, který vedl k zastavení běžícího procesu, spolu s možnými příčinami. Doporučuje se připojit seznam kroků, které mohou problém vyřešit.

### Příklad:

             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:="Toto je záměrná uživatelem definovaná chyba…"
                 Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
                 Exit Sub
             AlertAndExecNext:
                 errTitle = "Chyba "& Err &" na řádku "& Erl &" v "& Err.Source
                 MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
                 Resume Next
             End Sub

## ClassModule Exception

Jednoduchý ClassModule, který obaluje objekt VBA Err a který může být použit pro přístup k vlastnostem a metodám objektu Err ze standardních modulů jazyka 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

## Příklad

             Function Exc As Object
                 Exc = New Exception
             End Function

             Sub aRoutine
             try:
                 On Local Error GoTo catch:
                 Exc.Raise(4096, "myLib.myModule.aRoutine", _
                     "Jakýkoliv několikařádkový popis této uživatelem definované výjimky")
                 ' místo pro vlastní kód
             finally:
                 Exit Sub
             catch:
                 errTitle = "Chyba "& Exc.Number &" na řádku "& Erl &" v "& Exc.Source
                 MsgBox Exc.Description, MB_ICONSTOP, errTitle
                 Resume finally
             End Sub

Příkaz Error a modul třídy jako Exception mohou být vzájemně zaměňovány kromě případů, kdy modul přidává vlastnosti navíc.

Související témata

Funkce pro zpracování chyb

Příkaz Option ClassModule

Příkaz Option VBASupport

Služba ScriptForge.Exception