Guida di LibreOffice 24.8
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à.