< Précédent | Suivant >

Traitement des erreurs Perl

Vous pouvez utiliser l'instruction eval de Perl dans votre code pour traiter les erreurs.

Lorsque les routines de l'API Rational ClearQuest détectent des conditions imprévues, elles émettent une exception. Si l'exception n'est pas interceptée par le programme appelant, l'interpréteur de langage met fin au programme. S'il y a des risques que l'appel de l'API Rational ClearQuest échoue, vous devez intercepter et traiter les exceptions.

Appliquez les méthodes standard de traitement des erreurs Perl en utilisant l'instruction eval de Perl pour analyser les erreurs. Utilisez la syntaxe suivante :
eval {instructions que vous souhaitez traiter}; 
En phase d'exécution, si le moteur Perl détecte une erreur dans une instruction du bloc eval, il passe le reste du bloc eval et définit $@ pour le texte d'erreur correspondant. For example:
eval{$objectName->MethodName();};
 if ($@) 
     { 
       print "Error using MethodName method. Erreur : $@\n"; 
     } 
else 
     {
      # continue without error ... 
     } 

Plusieurs fonctions dont les risques d'échec sont élevés font exception à cette règle. Notamment, les fonctions de contrôle de validité (validate) et de définition (set) de zone renvoient des indications d'erreur au lieu d'émettre des exceptions. Pour plus d'informations, voir Contrôle des erreurs et contrôle de validité.

Contrôle des erreurs

Pour de nombreuses méthodes et propriétés de l'API Rational ClearQuest, vous devez vérifier la valeur de retour afin de contrôler si l'appel renvoie une erreur.

Pour les appels de fonctions qui renvoient un objet, vous devez vérifier la condition, si l'objet indiqué n'existe pas. Par exemple, si vous appelez la méthode Item d'un objet de collection et si l'objet que vous spécifiez ne se trouve pas dans la collection, la valeur de retour est un objet non défini pour Perl. Vous pouvez utiliser
if (!defined($result)) { ... };
pour détecter cette condition.

Pour les appels de fonctions dont la valeur de retour d'erreur est String, la valeur est vide si aucune erreur ne s'est produite ou la valeur est une chaîne (String) contenant la description de l'erreur. Vous pouvez contrôler le résultat de l'appel de la méthode et si la valeur n'est pas vide, vous pouvez extraire l'erreur dans une variable, en tant que valeur String.

Par exemple, la méthode SetFieldValue de l'objet Entity est définie pour renvoyer une valeur String. Elle renvoie une chaîne (String) vide si les changements de la zone sont autorisés et si l'opération aboutit. Si l'opération échoue, cette méthode renvoie une chaîne (String) contenant une explication de l'erreur.

Si une zone incorrecte est indiquée, une erreur est renvoyée. For example:
The Defect SAMPL00000123 does not have a field named "Invalid_field" (Le défaut SAMPL00000123 ne comporte pas de champ nommé "Invalid_field"). 
Vous devez également écrire du code pour traiter les exceptions potentielles. Capturez les exceptions en exécutant des méthodes d'API au sein d'une instruction eval{}. Par exemple,
# capturer les exceptions et les chaînes de message d'erreur 
# ... 
eval { $RetVal = ${$CQEntity}->Validate(); }; 
# Les informations sur l'EXCEPTION se trouvent dans $@ 
# RetVal est une chaîne vide ou contient une chaîne de message d'erreur 
if ($@){ 
        print "Exception: '$@’\n"; 
        # aucun autre traitement d'exception... 
        } 
if ($RetVal eq ""){
        # success... 
        } 
else { 
        # failure... 
        # renvoyer la chaîne du message ici... 
        }
< Précédent | Suivant >

Commentaire