Traitement des erreurs
- Présentation d'un programme Apache OpenOffice Basic
- Utilisation des variables
- Variables de chaîne de caractères
- Variables numériques
- Variables booléennes
- Variables de date et d'heure
- Matrices
- Portée et durée de vie des variables
- Constantes
- Opérateurs
- Instructions conditionnelles
- Boucles
- Procédures et fonctions
- Traitement des erreurs
La correction des erreurs est l'une des parties les plus lourdes de la programmation. Apache OpenOffice Basic fournit de nombreux outils qui simplifient le traitement des erreurs.
Instruction On Error
L'instruction On Error est essentielle pour le traitement des erreurs :
Sub Test
On Error Goto ErrorHandler
' ... undertake task during which an error may occur
Exit Sub
ErrorHandler:
' ... individual code for error handling
End Sub
La ligne On Error Goto ErrorHandler définit la façon dont Apache OpenOffice Basic réagit en cas d'erreur. L'instruction Goto ErrorHandler indique à Apache OpenOffice Basic de quitter la ligne de programme active et d'exécuter le code ErrorHandler:.
Commande Resume
La commande Resume Next reprend le déroulement du programme après l'exécution du code de traitement des erreurs, à partir de la ligne suivant celle où l'erreur s'est produite :
ErrorHandler:
' ... individual code for error handling
Resume Next
La commande Resume Proceed permet d'indiquer un point particulier où reprendre le programme après le traitement de l'erreur :
ErrorHandler:
' ... individual code for error handling
Resume Proceed
Proceed:
' ... the program continues here after the error
Pour reprendre un programme sans afficher de message d'erreur lorsqu'une erreur se produit, utilisez la syntaxe suivante :
Sub Test
On Error Resume Next
' ... perform task during which an error may occur
End Sub
La commande On Error Resume Next doit être utilisée avec précaution, car elle a un effet global.
Requêtes portant sur les informations sur les erreurs
Pour traiter une erreur, il est utile de disposer d'une description de celle-ci et de savoir où et pourquoi elle est survenue :
- La variable Err contient le nombre d'erreurs qui se sont produites.
- La variable Error$ contient une description de l'erreur.
- La variable Erl contient le numéro de la ligne où l'erreur s'est produite.
L'appel :
MsgBox "Error " & Err & ": " & Error$ & " (line : " & Erl & ")"
permet d'afficher les informations concernant une erreur dans une fenêtre de message.
VBA regroupe les messages d'erreur dans un objet statistique nommé Err, tandis que Apache OpenOffice Basic fournit les variables Err, Error$ et Erl. |
Les informations de statut restent valables jusqu'à ce que le programme rencontre une commande Resume ou On Error, qui les réinitialise.
Astuces pour le traitement structuré des erreurs
La commande de définition On Error et la commande de retour Resume sont toutes deux des variantes de la construction Goto.
Pour structurer proprement le code afin de ne pas générer d'erreurs lorsque vous utilisez cette construction, évitez de faire appel à des commandes de saut sans les surveiller.
La plus grande prudence est recommandée lors de l'utilisation de la commande On Error Resume Next, car elle supprime tous les messages d'erreur ouverts.
La meilleure solution consiste à n'utiliser qu'une seule approche pour le traitement des erreurs à l'intérieur d'un programme : séparez le traitement des erreurs du code du programme lui-même et ne revenez pas dans le code initial après une erreur.
Le code ci-dessous est un exemple de procédure de traitement des erreurs :
Sub Example
' Define error handler at the start of the function
On Error Goto ErrorHandler
' ... Here is the actual program code
On Error Goto 0 ' Deactivate error handling
' End of regular program implementation
Exit Sub
' Start point of error handling
ErrorHandler:
' Check whether error was expected
If Err = ExpectedErrorNo Then
' ... Process error
Else
' ... Warning of unexpected error
End If
On Error Goto 0 ' Deactivate error handling
End Sub
Cette procédure commence par la définition d'un programme de traitement des erreurs, suivi du code du programme en lui-même. À la fin du code du programme, le traitement des erreurs est désactivé par l'appel On Error Goto 0 et l'implémentation de la procédure se termine par la commande Exit Sub (à ne pas confondre avec End Sub).
L'exemple commence par vérifier si le numéro de l'erreur correspond à celui qui est attendu (stocké dans la constante imaginaire ExpectedErrorNo), puis traite l'erreur en conséquence. Si une autre erreur se produit, le système émet un avertissement. Il est important de contrôler le numéro de l'erreur, de manière à pouvoir détecter les erreurs inattendues.
L'appel On Error Goto 0 à la fin du code réinitialise les informations sur le statut de l'erreur (le code d'erreur dans les variables système Err) pour permettre l'identification d'une erreur ultérieure.
Content on this page is licensed under the Public Documentation License (PDL). |