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.
eval {instructions que vous souhaitez traiter};
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.
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.
The Defect SAMPL00000123 does not have a field named "Invalid_field" (Le défaut SAMPL00000123 ne comporte pas de champ nommé "Invalid_field").
# 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... }