例外の送出

メッセージ・フローでエラーや他の状態が検出されたときにメッセージ処理を終了する場合は、 次の 2 つの方法によってメッセージ・フローで例外をスローできます。

  1. ESQL THROW EXCEPTION ステートメントを使用します。

    THROW ステートメントを、Compute、Database、または Filter ノードの ESQL モジュールの任意の位置に組み込みます。 このステートメントで該当するオプションを使用して、独自のデータを例外に挿入するためのコーディングを行います。

  2. THROW ノードをメッセージ・フローに組み込みます。

    例外のソースと内容を識別するためのノード・プロパティーを設定します。

ノード・プロパティーのどちらかのステートメント・オプションを使用することにより、 メッセージ・テキストに挿入するメッセージ ID と値を指定して、 例外を解釈するユーザーに追加情報と識別情報を提供できます。 ブローカーが使用可能な任意のカタログ内のメッセージを指定できます。

例外をスローする状態はメッセージ・フローの動作によって判別され、メッセージ・フローの設計時にそのアクションの適切な位置を決定します。 たとえば、入力メッセージの内容を調べて、入力ノード (これは特定のメッセージ形式を受け取ったことをチェックする) が検出できない基準を満たしていることを確認したい場合もあります。

以下の例では、Invoice メッセージの例を使用して、ESQL THROW ステートメントの使用方法を示します。 送り状番号が特定の範囲内にあることをチェックしたい場合には、有効範囲内になかった受信済みの Invoice メッセージについて例外をスローします。

--Check for invoice number lower than permitted range
IF Body.Invoice.InvoiceNo  < 100000 THEN
   THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES
   ('Invoice number too low', Body.Invoice.InvoiceNo);

-- Check for invoice number higher than permitted range
ELSEIF Body.InvoiceNo > 500000 THEN
      THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1235 VALUES
   ('Invoice number too high', Body.Invoice.InvoiceNo);

ELSE DO
  -- invoice number is within permitted range
  -- complete normal processing
ENDIF;

関連概念
メッセージ・フロー
ExceptionList ツリー
ESQL
メッセージのモデル化

関連タスク
メッセージ・フローの設計
メッセージ・フローの内容の定義
メッセージ・フローのエラー処理
ESQL ファイルの管理

関連資料
Compute ノード
Database ノード
Filter ノード
ESQL
THROW ステートメント