< 前へ | 次へ >

Perl のエラー処理

エラー処理には、コードに Perl eval ステートメントを使用することができます。

Rational ClearQuest API のルーチンによって予期しない状態が検出された場合、そのルーチンから例外がスローされます。例外が呼び出し側プログラムで把握されない場合は、言語インタープリタによりプログラムが終了させられます。Rational ClearQuest API 呼び出しが失敗する可能性がある場合は、例外をキャッチして処理する必要があります。

通常、Perl エラーを処理するには、Perl の eval ステートメントを使用してエラーを分析します。次の構文を使用します。
eval {enter statements you want to monitor}; 
実行時に Perl エンジンが eval ブロックのステートメント内でエラーを検出した場合は、その eval ブロックのほかの部分をスキップし、対応するエラー テキストに $@ を設定します。以下に例を示します。
eval{$objectName->MethodName();};
 if ($@) 
     { 
       print "Error using MethodName method. Error: $@¥n";
     } 
else 
     {
      # continue without error ... 
     } 

これに対する例外として、一般的に失敗することが予期されている関数がいくつかあります。特に、フィールドを検証する関数とフィールドを設定する関数は、例外を表示する代わりにエラー通知を戻します。詳しくは、「エラーのチェックと検証」を参照してください。

エラー チェック

Rational ClearQuest API のメソッドとプロパティでは、多くの場合、ユーザーは戻り値をチェックして、呼び出しからエラーが戻されているかどうかを検証する必要があります。

オブジェクトを戻す関数への呼び出しの場合、指定されたオブジェクトが存在していないかどうかという条件をチェックする必要があります。例えば、コレクション オブジェクトの Item メソッドを 呼び出す場合、指定するオブジェクトがそのコレクション内に存在しない場合、 戻り値は Perl の未定義のオブジェクトです。この条件を検出するには、
if (!defined($result)) { ... };
を使用できます。

戻り値がエラー文字列である関数への呼び出しの場合、その戻り値は、エラーがない場合は空であり、それ以外の場合はエラーを説明する文字列です。 メソッドの呼び出し結果をチェックし、値が空でない場合は、変数に文字列値として入れられたエラーを取得できます。

例えば、Entity オブジェクトの SetFieldValue メソッドは、文字列値を戻すように定義されています。 このメソッドは、フィールドへの変更が許可されていて操作が正常に終了した場合、空の文字列を戻します。それ以外の場合で操作が失敗した場合、このメソッドは、エラーの説明を含む文字列を戻します。

誤ったフィールドが指定された場合、エラーが戻されます。 以下に例を示します。
The Defect SAMPL00000123 does not have a field named "Invalid_field". 
潜在的な例外障害を処理するコードを作成する必要もあります。eval{} ステートメント内で API メソッドを実行して、 例外をトラップします。以下に例を示します。
# 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... 
        }

フィードバック
< 前へ | 次へ >