Traitement des erreurs

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png


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.

Documentation note.png 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.

Documentation note.png Dans VBA, la méthode Err.Clear de l'objet Err réinitialise le statut d'erreur lorsqu'une erreur s'est produite. Dans Apache OpenOffice Basic, les commandes utilisées à cet effet sont On Error et Resume.

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).
Personal tools