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:

warning

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.

note

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

tip

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
      
note

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.


Podpořte nás!