Ajuda do LibreOffice 26.2
Utilize o objeto VBA Err para gerar ou tratar erros de execução.
Err é um objeto global integrado do VBA que permite:
para gerar erros Basic predefinidos
para lançar exceções definidas pelo utilizador
para indicar a rotina que originou o erro
para descrever o erro e as possíveis soluções
O objeto Err do VBA possui as seguintes propriedades e métodos:
Err.Description As String
A propriedade Descrição indica a natureza do erro. Description detalha as várias razões que podem estar na origem do erro. Idealmente, apresenta várias medidas a tomar para ajudar a resolver o problema e evitar que volte a ocorrer. O alias «Basic» corresponde à função Error para erros predefinidos do LibreOffice.
Err.Number As Long
O código de erro associado ao erro. A propriedade predefinida do objeto Err é Number. O alias LibreOffice Basic corresponde à função Err.
Err.Source As String
Fonte indica o nome da rotina que gera o erro. Fonte é uma opção para erros definidos pelo utilizador.
Err.Clear()
Redefine a descrição, Erl, o número e as propriedades de origem do erro atual. O alias LibreOffice Basic corresponde à instrução Resume.
Err.Raise(Number As Long, Optional source As String, Optional description As String)
Lança erros definidos pelo utilizador ou erros predefinidos. O alias básico LibreOffice corresponde à instrução Error.
Número: Um código de erro definido pelo utilizador ou predefinido a ser gerado.
O intervalo de códigos de erro 0-2000 está reservado para o LibreOffice Basic. Os erros definidos pelo utilizador podem começar a partir de valores mais elevados, a fim de evitar conflitos com futuros desenvolvimentos do LibreOffice Basic.
Fonte: O nome da rotina que gera o erro. Recomenda-se um nome no formato «myLibrary.myModule.myProc».
Descrição: Uma descrição do problema que levou à interrupção do processo em execução, acompanhada das várias razões que podem estar na origem do mesmo. Recomenda-se uma lista detalhada das possíveis medidas que possam ajudar a resolver o 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, Descrição:="Este é um erro definido pelo utilizador..."
Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
Exit Sub
AlertAndExecNext:
errTitle = "Erro " & Err & " na linha " & Erl & " em " & Err.Source
MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
Resume Next
End Sub
Um pequeno ClassModule, que encapsula o objeto VBA Err, pode disponibilizar as propriedades e métodos do Err para os módulos Basic padrão do LibreOffice.
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", _
"Qualquer descrição com várias linhas para esta exceção definida pelo utilizador")
' o teu código vai aqui …
finally:
Exit Sub
catch:
errTitle = "Erro " & Exc.Number & " na linha " & Erl & " em " & Exc.Source
MsgBox Exc.Description, MB_ICONSTOP, errTitle
Resume finally
End Sub
A instrução Error ou um módulo de classe semelhante a uma exceção podem ser utilizados de forma intercambiável, embora este último ofereça funcionalidades adicionais.