Wenn die Routinen in der Rational-ClearQuest-API unerwartete Bedingungen feststellen, wird eine Ausnahmebedingung ausgegeben. Wird die Ausnahmebedingung nicht vom aufrufenden Programm abgefangen, beendet der Sprachinterpreter das Programm. Besteht die Möglichkeit, dass der Aufruf der Rational-ClearQuest-API fehlschlägt, sollten Ausnahmebedingungen abgefangen und bearbeitet werden.
eval {zu überwachende Anweisungen};
eval{$objectName->MethodName();}; if ($@) { print "Error using MethodName method. Error: $@\n"; } else { # weiter ohne Fehler ... }
Einige Funktionen, die erwartungsgemäß häufig fehlschlagen, bilden hierzu eine Ausnahme. Insbesondere Funktionen für das Validieren (Validate) und das Setzen von Feldern (SetField) geben Fehleranzeiger zurück, anstatt Ausnahmebedingungen auszulösen. Weitere Informationen finden Sie im Abschnitt "Fehlerprüfung und Validierung".
Fehlerprüfung
Bei vielen Methoden und Eigenschaften der Rational-ClearQuest-API müssen Sie den Rückgabewert prüfen, um festzustellen, ob der Aufruf einen Fehler zurückgibt.
if (!defined($result)) { ... };verwenden, um diese Bedingung zu ermitteln.
Bei Aufruf von Funktionen, deren Rückgabewert eine fehlerhafte Zeichenfolge ist, ist der Wert bei Nichtvorhandensein eines Fehlers entweder ein Leerwert oder eine Zeichenfolge mit einer Beschreibung des Fehlers. Sie können das Ergebnis des Methodenaufrufs überprüfen, und wenn der Wert nicht leer ist, können Sie den Fehler in einer Variablen als Zeichenfolgewert abrufen.
Die Methode SetFieldValue des Entitätsobjekts ist beispielsweise so definiert, dass ein Zeichenfolgewert zurückgegeben wird. Wenn die Änderungen am Feld zulässig sind und die Operation erfolgreich ist, wird eine leere Zeichenfolge zurückgegeben. Schlägt die Operation fehl, wird eine Zeichenfolge mit einer Erläuterung des Fehlers zurückgegeben.
The Defect SAMPL00000123 does not have a field named "Invalid_field".
# Zeichenfolgen von Ausnahmebedingungen und Fehlernachrichten abfangen # ... eval { $RetVal = ${$CQEntity}->Validate(); }; # Ausnahmebedingungsinformation ist in $@ # RetVal ist entweder eine leere Zeichenfolge oder enthält eine Fehlernachrichtenzeichenfolge if ($@){ print "Exception: '$@’\n"; # Weitere Ausnahmebedingungsbehandlung erfolgt hier... } if ($RetVal eq ""){ # Erfolg... } else { # Fehler... # Nachrichtenzeichenfolge hier zurückgeben... }