Quando nelle routine dell'API Rational ClearQuest si verificano condizioni impreviste, viene generata un'eccezione. Se l'eccezione non viene rilevata dal programma chiamante, il programma di interpretazione del linguaggio termina il programma. Se c'è una possibilità che la chiamata dell'API Rational ClearQuest non riesca, è necessario rilevare e gestire le eccezioni.
eval {immettere le istruzioni che si desidera monitorare};
eval{$objectName->MethodName();}; if ($@) { print "Error using MethodName method. Error: $@\n"; } else { # continuare senza errore ... }
Diverse funzioni, che in genere si prevede abbiano esito negativo, fanno eccezione. In particolare, le funzioni di convalida e impostazione di campi restituiscono indicazioni di errori anziché generare eccezioni. Per ulteriori informazioni, consultare Verifica errori e convalida.
Verifica errori
Per molti metodi e proprietà dell'API Rational ClearQuest, è necessario esaminare il valore di restituzione per confermare se la chiamata restituisce o meno un errore.
if (!defined($result)) { ... };per rilevare questa condizione.
Per le chiamate alle funzioni che dispongono di un valore di restituzione Stringa di errore, il valore è vuoto se non ci sono errori oppure è una stringa contenente la descrizione dell'errore. È possibile esaminare il risultato della chiamata del metodo e, se il valore non è vuoto, è possibile richiamare l'errore in una variabile, come un valore Stringa.
Ad esempio, il metodo SetFieldValue dell'oggetto Entity è definito affinché restituisca un valore Stringa. Restituisce una Stringa vuota se le modifiche al campo sono consentite e l'operazione riesce, altrimenti, se l'operazione non riesce, questo metodo restituisce una Stringa contenente una spiegazione dell'errore.
The Defect SAMPL00000123 does not have a field named "Invalid_field".
# rilevare eccezioni e stringhe di messaggi di errore # ... eval { $RetVal = ${$CQEntity}->Validate(); }; # informazioni sull'eccezione in $@ # RetVal è una stringa vuota o contiene una stringa messaggio di errore if ($@){ print "Exception: '$@’\n"; # altra gestione eccezione va qui... } if ($RetVal eq ""){ # riuscito... } else { # non riuscito... # restituisce la stringa messaggio qui... }