Guida di LibreOffice 25.2
Usate l'oggetto VBA Err per generare o gestire degli errori in fase di esecuzione.
Err è un oggetto globale, integrato in VBA che permette:
di generare errori predefiniti di Basic
di lanciare eccezioni definite dall'utente
di indicare la routine che ha generato l'errore
di descrivere l'errore e le soluzioni possibili
L'oggetto VBA Err possiede le proprietà e i metodi seguenti:
         Err.Description As String
      La proprietà Description restituisce la natura dell'errore. Description indica in modo dettagliato le varie ragioni che possono aver causato l'errore. Idealmente, fornisce la procedura da seguire per risolvere il problema e prevenire la sua ricomparsa. In Basic è un alias della funzione Error per gli errori predefiniti di LibreOffice.
         Err.Number As Long
      Il codice di errore associato all'errore. La proprietà predefinita dell'oggetto Err è Number. L'alias di LibreOffice Basic è la funzione Err.
         Err.Source As String
      Source indica il nome della routine che genera l'errore. Source è opzionale per gli errori definiti dall'utente.
         Err.Clear()
      Reimposta la descrizione e le proprietà Erl, il numero e la sorgente dell'errore attivo. L'alias di LibreOffice Basic è l'istruzione Resume.
         Err.Raise(Number As Long, Optional source As String, Optional description As String)
      Lancia gli errori definiti dall'utente o quelli predefiniti. L'alias di LibreOffice Basic è l'istruzione Error.
Number: un codice di errore da generare, predefinito o definito dall'utente.
L'intervallo dei codici di errore da 0 a 2000 è riservato per LibreOffice Basic. Gli errori definiti dall'utente dovrebbero iniziare da valori più alti al fine di prevenire conflitti con futuri sviluppi di LibreOffice Basic.
Source: il nome della routine che genera l'errore. Si consiglia di usare un nome nel formato "miaLibreria.mioModulo.miaProc".
Description Una descrizione del problema che causa il blocco del processo in esecuzione, seguita dalle varie ragioni che possono causarlo. Si consiglia di prevedere un elenco dettagliato delle procedure che potrebbero essere utili per risolvere il problema.
         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:="Questo è un errore intenzionale definito dall'utente …"
             Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
             Exit Sub
         AlertAndExecNext:
             errTitle = "Errore "& Err &" alla riga "& Erl &" in "& Err.Source
             MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
             Resume Next
         End Sub
      Un breve ClassModule, che si interfacci con l'oggetto VBA Err, può distribuire proprietà e metodi di Err ai moduli standard di 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
      
         Function Exc As Object
             Exc = New Exception
         End Function
          
         Sub aRoutine
         try:
             On Local Error GoTo catch:
             Exc.Raise(4096, "myLib.myModule.aRoutine", _
                 "Qualsiasi descrizione di più righe per questa eccezione definita dall'utente")
             ' il vostro codice va qui …
         finally:
             Exit Sub
         catch:
             errTitle = "Errore "& Exc.Number &" alla riga "& Erl &" in "& Exc.Source
             MsgBox Exc.Description, MB_ICONSTOP, errTitle
             Resume finally
         End Sub
      L'istruzione Error o un modulo di una classe di tipo Exception possono essere usati in modo interscambiabile, anche se il secondo aggiunge ulteriori funzionalità.