Objeto Err [VBA]
Utilize o objeto VBA Err para levantar ou tratar erros de execução.
Err é um objeto global integrado do VBA que permite:
levantar erros Basic predefinidos
para lançar exceções definidas pelo usuário
para nomear a rotina que originou o erro
para descrever o erro e sua possível resolução
O objeto VBA Err tem as seguintes propriedades e métodos:
Propriedades
Err.Description As String
A propriedade Description fornece a natureza do erro. Detalha as várias razões que podem ser a causa do erro. Idealmente fornece várias possibilidades de ações para resolver o problema e prevenir novas ocorrências. Seu alias é a função Basic Error para erros predefinidos do LibreOffice.
Err.Number As Long
Este é o código de erro associado ao erro. A propriedade padrão d objeto Err é Number. Seu alias é a função Err do LibreOffice Basic.
Err.Source As String
Source indica o nome da rotina que produziu o erro. Source é opcional para erros definidos pelo usuário.
Métodos
Err.Clear()
Redefine as propriedades Description, Erl, Number e Source do erro atual. Seu alias é a instrução Resume do LibreOffice Basic.
Err.Raise(Number As Long, Optional source As String, Optional description As String)
Lança erros definidos pelo usuário ou erros predefinidos. Seu alias é a instrução Error no LibreOffice Basic.
Parâmetros
Number o código do erro definido pelo usuário e predefinido a ser levantado.
O intervalo de códigos de erro de 0 a 200 é reservado para o LibreOffice Basic. Erros definidos pelo usuário podem começar com valores maiores para prevenir colisões com os desenvolvimentos futuros do LibreOffice Basic.
Source O nome da rotina que levantou o erro. Recomenda-se um nome na forma "minhaBib.meuModulo.minhaProc".
Description Uma descrição do problema que levou à parada do processo em execução, acompanhado dos vários motivos que podem o ter causado. Recomenda-se uma lista detalhada das possíveis soluções para 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, Description:="Este é um erro definido pelo usuário intencional …"
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
Exceção ClassModule
Um ClassModule curto, que envolve o objeto VBA Err, pode distribuir as propriedades e métodos Err para módulos padrão do 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
Exemplo
Function Exc As Object
Exc = New Exception
End Function
Sub aRoutine
try:
On Local Error GoTo catch:
Exc.Raise(4096, "myLib.myModule.aRoutine", _
"Uma descrição com várias linhas para esta exceção definida pelo usuário"
' seu 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 tipo Exception podem ser utilizados de forma intercambiada, enquanto que o último tem características extras.