Contenuto

# 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:

- 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

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.

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

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

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

Argomenti correlati

Funzioni di gestione degli errori

Opzione ClassModule

Istruzione Option VBASupport

Servizio ScriptForge.Exception