Cuando las rutinas de la API de Rational ClearQuest encuentran condiciones inesperadas, lanzan una excepción. Si la excepción no se captura en el programa de llamada, el intérprete de lenguaje termina el programa. Si existe cualquier posibilidad de que la API de Rational ClearQuest falle, debe capturar y gestionar las excepciones.
eval {especifique las sentencias que desea supervisar};
eval{$objectName->MethodName();}; if ($@) { print "Error using MethodName method. Error: $@\n"; } else { # continue without error ... }
Varias funciones que se espera que habitualmente fallen son excepciones de esto. En concreto, valide y establezca indicaciones de error de retorno de funciones de campo, en lugar de lanzar excepciones. Para obtener más información, consulte el apartado Comprobación y validación de errores.
comprobación de errores
Para la mayoría de los métodos y las propiedades de la API de Rational ClearQuest, debe comprobar el valor de retorno a fin de validar si la llamada devuelve un error o no.
if (!defined($result)) { ... };para detectar esta condición.
Para llamadas a funciones que tienen un valor de retorno String de error, si no existe ningún error el valor está vacío, o bien, se devuelve un String que contiene la descripción del error. Puede comprobar el resultado de la llamada al método y, si el valor no está vacío, puede recuperar el error en una variable, como un valor String.
Por ejemplo, el objeto Entity del método SetFieldValue se define al devolver un valor String. Devuelve un String vacío si se permiten cambios en el campo y la operación es satisfactoria; en cambio, si la operación falla, este método devuelve un String que contiene una explicación del error.
El defecto SAMPL00000123 no tiene ningún campo llamado "Invalid_field".
# trap exceptions and error message strings # ... eval { $RetVal = ${$CQEntity}->Validate(); }; # EXCEPTION information is in $@ # RetVal is either an empty string or contains a failure message string if ($@){ print "Exception: '$@’\n"; # other exception handling goes here... } if ($RetVal eq ""){ # success... } else { # failure... # return the message string here... }