raiseException()

1 つ上の実行レベルに例外を生成するためにコラボレーション例外を準備します。

構文

void raiseException(String exceptionType, String message)
 void raiseException(String exceptionType, int messageNum,
       String parameter[,...])
 void raiseException (String exceptionType, int messageNum,
       Object[] paramArray)
 void raiseException(CollaborationException exceptionObject)
 

パラメーター

exceptionType
生成される例外についての例外タイプ。コラボレーション例外の原因を識別する、次の例外タイプ静的変数の 1 つとして、この例外タイプを指定します。

AnyException
任意のタイプの例外。

AttributeException
属性でアクセスする場合の問題です。例えば、String 属性に対してコラボレーションが getDouble() を呼び出した場合や、存在しない属性に対して getString() を呼び出した場合です。

JavaException
コラボレーション・ロジック内の Java コードの問題です。

ObjectException
メソッドに渡されたビジネス・オブジェクトが無効でした。または、null オブジェクトにアクセスされました。

OperationException
サービス呼び出しが適切に設定されませんでした。あるいは送信されませんでした。

ServiceCallException
サービス呼び出しに失敗しました。例えば、コネクターやアプリケーションは使用できません。

SystemException
InterChange Server システムの内部エラー。

TransactionException
トランザクション・コラボレーションの、トランザクションの振る舞いに関連するエラーです。例えば、ロールバックに失敗しました。あるいは、コラボレーションが差し戻しを適用できませんでした。

message
例外メッセージを含むテキスト・ストリング。

messageNum
コラボレーションのメッセージ・ファイル内のメッセージのメッセージ番号で、メッセージ番号で索引付けされます。メッセージ・テキスト・ファイルの設定方法の詳細は、メッセージ・ファイルの作成を参照してください。

parameter
単一メッセージ・パラメーターの値。コンマで区切られた、最大 5 つのメッセージ・パラメーターが可能です。各パラメーターは順次的に解決され、メッセージ・テキスト内のパラメーターになります。

paramArray
メッセージ・パラメーター値の配列。各パラメーターは順次的に解決され、メッセージ・テキスト内のパラメーターになります。

exceptionObject
CollaborationException 例外オブジェクト変数の名前。

次の説明とコード例は、コラボレーション API 内で提供される必要があります。

注記

raiseException() メソッドは、1 つ上の実行レベルに例外を生成するためにコラボレーション例外を準備します。コラボレーション・ランタイム環境で raiseException() 呼び出しが実行されると、コラボレーションの実行が例外状態に変更され、アクティビティー・ダイアグラムのロジックが続行されます。生成された例外に対するアクティビティー・ダイアグラムの応答方法は、実行経路の終端ノードによって以下のように異なります。

障害が発生したときには、単に失敗として終了させるのではなく、例外を明示的に生成させることを推奨します。コードによりコラボレーション・ランタイム環境に明示的に例外を生成すると、管理者は Flow Manager を使用して、未解決のフローの一部として例外テキストを表示できます。詳細については、例外の発生を参照してください。

raiseException() メソッドにはいくつかの形式があります。

注:
messageNum パラメーターを取得するメソッドのすべての形式において、メッセージ番号で索引化されるメッセージ・ファイルを使用する必要があります。メッセージ・テキスト・ファイルの設定方法の詳細は、メッセージ・ファイルの作成を参照してください。

このセクションでは、raiseException() メソッドの各形式の例を示します。

  1. 次の例では、メソッドの第 1 の形式を使用して ServiceCallException タイプの例外を生成します。テキストはメソッドの呼び出しに直接渡されます。
    raiseException(ServiceCallException, "Attempt to validate
     Customer failed.");
     
  2. 次の例では、メソッドの第 2 の形式を使用して OperationException タイプの例外を生成し、そのメッセージがメッセージ・ファイルに次のように表示されます。
    23
     Customer update failed for CustomerID={1} CustomerName={2}
     

    この raiseException() 呼び出しは、メッセージ 23 を検索し、fromCustomer 変数からメッセージの 2 つのパラメーター (カスタマー ID と名前) の値を検索して例外メッセージを生成します。

    raiseException(OperationException, 23,
        fromCustomer.getString("CustomerID"),
        fromCustomer.getString("CustomerName"));
     
  3. 次の例は、第 3 の形式を使用してメッセージ・パラメーター値を Object の配列として送信します。

    例えば、メッセージ・ファイルに次のメッセージ・テキストが含まれるとします。

    2000
     Collaboration Message: BOName: {1} with Verb: {2} encountered
     an undefined error.
     

    次のコードは Objects のパラメーターの配列を作成し、そこに値をロードして raiseException() メソッドを呼び出します。

    Object[] myParamArray = new Object[2];
      
     myParamArray[0] = triggeringBusObj.getType();
     myParamArray[1] = triggeringBusObj.getVerb();
      
     raiseException(AnyException, 2000, myParamArray);
     
  4. 最後の例は、メソッドの第 4 の形式を使用して、以前に処理された例外を生成します。システム定義の currentException 変数は、例外を含む例外オブジェクトです。
    raiseException(currentException);
     

Copyright IBM Corp. 2004