Contenu

# Objet Err [VBA]

Utilisez l'objet Err VBA pour déclencher ou gérer les erreurs d'exécution.

Err est un objet global VBA intégré qui permet :

- générer des erreurs Basic prédéfinies

- pour lever des exceptions définies par l'utilisateur

- pour nommer la routine à l'origine de l'erreur

- pour décrire l'erreur et les solutions possibles

Cette constante, fonction ou objet est activé avec l'instruction Option VBASupport 1 placée avant le code exécutable dans un module.

L'objet VBA Err a les propriétés et méthodes suivantes :

## Propriétés

             Err.Description As String

La propriété Description donne la nature de l'erreur. Description détaille les différentes raisons pouvant provoquer l'erreur. Idéalement, elle fournit les multiples actions visant à résoudre le problème et empêcher sa réapparition. Son alias Basic est la fonction Error pour les erreurs prédéfinies de LibreOffice.

             Err.Number As Long

C'est le code d'erreur associé à l'erreur. La propriété par défaut de l'objet Err est Number. L'alias LibreOffice Basic est la fonction Err.

             Err.Source As String

Source indique le nom de la routine qui produit cette erreur. Source est une option pour les erreurs définies par l'utilisateur.

## Méthodes

             Err.Clear()

Réinitialise la descriptions, les propriétés Erl, de nombre et de la source de l'erreur active. L'alias LibreOffice Basic est l'instruction Resume.

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

Lance des erreurs définies par l'utilisateur ou des erreurs prédéfinies. L'alias LibreOffice Basic est l'instruction Error.

### Paramètres

Number: un code d'erreur pré-défini ou défini par l'utilisateur à élever.

La plage de codes d'erreur 0-2000 est réservée à LibreOffice Basic. Les erreurs définies par l'utilisateur peuvent commencer à partir de valeurs plus élevées afin d'éviter une collision avec les développements futurs de LibreOffice Basic.

Source: le nom de la routine provoquant l'erreur. Un nom sous la forme de "myLibrary.myModule.myProc" est recommandé.

Description: une description du problème entraînant l'arrêt du processus en cours, accompagnée des différentes raisons qui peuvent le provoquer. Une liste détaillée des actions possibles pouvant aider à résoudre le problème est recommandée.

### Exemple :

             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:="This is an intended user-defined error …"
                 Err.Raise(4096, "Standard.Module1.ThrowErrors", aDesc)
                 Exit Sub
             AlertAndExecNext:
                 errTitle = "Error "& Err &" at line "& Erl &" in "& Err.Source
                 MsgBox Err.Description, MB_ICONEXCLAMATION, errTitle
                 Resume Next
             End Sub

## Exception ClassModule

Un courtClassModule, qui encapsule l'objet VBA Err, peut distribuer les propriétés et méthodes Err des modules LibreOffice Basic standards.

             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

## Exemple

             Function Exc As Object
                 Exc = New Exception
             End Function

             Sub aRoutine
             try:
                 On Local Error GoTo catch:
                 Exc.Raise(4096, "myLib.myModule.aRoutine", _
                     "Toute description sur plusieurs lignes pour cette exception définie par l'utilisateur")
                 ' votre code ici…
             finally:
                 Exit Sub
             catch:
                 errTitle = "Error "& Exc.Number &" at line "& Erl &" in "& Exc.Source
                 MsgBox Exc.Description, MB_ICONSTOP, errTitle
                 Resume finally
             End Sub

L'instruction Error ou un module de classe de type Exception peut être utilisé de manière interchangeable, tandis que ce dernier ajoute des fonctionnalités supplémentaires.

Rubriques connexes

Fonctions de gestion des erreurs

Instruction Option ClassModule

Instruction Option VBASupport

Service ScriptForge.Exception