Oggetto Err [VBA]

Usate l'oggetto VBA Err per generare o gestire degli errori in fase di esecuzione.

Err è un oggetto globale, integrato in VBA che permette:

warning

Questa costante, funzione od oggetto viene abilitata con l'istruzione Option VBASupport 1 posizionata prima del codice eseguibile del programma all'interno del modulo.


L'oggetto VBA Err possiede le proprietà e i metodi seguenti:

Proprietà


         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.

Metodi


         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.

Parametri

Number: un codice di errore da generare, predefinito o definito dall'utente.

note

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.

Esempio:


         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
      

Eccezione ClassModule

tip

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
      

Esempio


         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
      
note

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à.


Sosteneteci!