エラー処理には、コードに Perl eval ステートメントを使用することができます。
Rational ClearQuest API のルーチンによって予期しない状態が検出された場合、そのルーチンから例外がスローされます。例外が呼び出し側プログラムで把握されない場合は、言語インタープリタによりプログラムが終了させられます。Rational ClearQuest API 呼び出しが失敗する可能性がある場合は、例外をキャッチして処理する必要があります。
eval {enter statements you want to monitor};
eval{$objectName->MethodName();}; if ($@) { print "Error using MethodName method. Error: $@¥n"; } else { # continue without error ... }
これに対する例外として、一般的に失敗することが予期されている関数がいくつかあります。特に、フィールドを検証する関数とフィールドを設定する関数は、例外を表示する代わりにエラー通知を戻します。詳しくは、「エラーのチェックと検証」を参照してください。
エラー チェック
Rational ClearQuest API のメソッドとプロパティでは、多くの場合、ユーザーは戻り値をチェックして、呼び出しからエラーが戻されているかどうかを検証する必要があります。
if (!defined($result)) { ... };を使用できます。
戻り値がエラー文字列である関数への呼び出しの場合、その戻り値は、エラーがない場合は空であり、それ以外の場合はエラーを説明する文字列です。 メソッドの呼び出し結果をチェックし、値が空でない場合は、変数に文字列値として入れられたエラーを取得できます。
例えば、Entity オブジェクトの SetFieldValue メソッドは、文字列値を戻すように定義されています。 このメソッドは、フィールドへの変更が許可されていて操作が正常に終了した場合、空の文字列を戻します。それ以外の場合で操作が失敗した場合、このメソッドは、エラーの説明を含む文字列を戻します。
The Defect SAMPL00000123 does not have a field named "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... }