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:

warning

Esta constante, função ou objeto se ativa com a instrução Option VBASupport 1 colocada antes do código executável do programa em um módulo.


O objeto VBA Err possui as seguintes propriedades e métodos:

Propriedades


         Err.Description As String
      

A propriedade Description fornece a natureza do erro. Description 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
      

O código de erro associado ao erro. A propriedade padrão do objeto Err é Number. O alias no LibreOffice Basic é a função Err.


         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. O alias do LibreOffice Basic é a instrução Resume.


         Err.Raise(Number As Long, Optional source As String, Optional description As String)
      

Lança erros definidos pelo usuário ou erros predefinidos. O alias no LibreOffice Basic é a instrução Error.

Parâmetros

Number: o código do erro definido pelo usuário ou predefinido a ser levantado.

note

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.

Exemplo:


         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

tip

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
      
note

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.


♥ Doe para nosso projeto! ♥