このトピックには、以下のセクションが含まれています。
例外処理用の特殊なハンドラーを提供するには、TryCatch ノードを使用します。 まず入力メッセージは、このノードの try ターミナルにルーティングされます。 これは、メッセージ・フローのエラー処理ノードではない残りのノードに接続する必要があります。 ダウンストリーム・ノード (Throw ノードの可能性があります) から例外がスローされると、TryCatch ノードはそれをキャッチして、オリジナル・メッセージをその catch ターミナルにルーティングします。 catch ターミナルを別のノードに接続して、例外の後にメッセージのエラー処理を行えるようにします。
このようにして、例外はメッセージ・フローの処理を停止し、進行中のトランザクションに影響が出ないようにします。 catch 出力ターミナルが接続している場合、メッセージはそこに伝搬されます。 catch ターミナルが接続していない場合、メッセージは廃棄されます。
ワークベンチでは、TryCatch ノードは次のアイコンで表されます。
このノードが使用される方法に関しては、次のサンプルを参照してください。
Compute ノードを使用して合計を計算するときに Throw および TryCatch ノードを使用します。 計算された合計が「Total」フィールドの最大値を超えるときにシステム管理者に送信されるメッセージを作成できます。
TryCatch ノードのインスタンスをメッセージ・フローに入れると、TryCatch ノードを構成することができます。
これを行うには、エディター・ビューでノードを右クリックし、「プロパティー」をクリックします。 「説明」プロパティーが表示されます。
簡略説明、詳細説明、あるいはその両方を入力します。
「適用」をクリックすると、プロパティー・ダイアログを閉じずに TryCatch ノードが変更され、「OK」をクリックすると、変更が適用されてプロパティー・ダイアログが閉じます。
「キャンセル」をクリックすると、ダイアログを閉じてプロパティーに対して行った変更をすべて破棄します。
次に、ノードのターミナルを接続して、このメッセージ・フローでの操作方法を決定する必要があります。
TryCatch ノードには、その操作に影響を与える構成可能なプロパティーがありません。 出力ターミナルをメッセージ・フロー内の後続のノードに接続することによって、作動方法を決定します。
メッセージ・フローで例外がスローされる場合には、Throw ノードまたは ESQL THROW ステートメントを明示的に使用するか、メッセージ・フローが処理するようにプログラムされていないエラーが検出された場合にブローカーが暗黙的な例外を発生することにより、制御が TryCatch ノードに戻ります。
メッセージは catch ターミナルを経由して伝搬され、設計したエラー処理が実行されます。 このターミナルを経由して伝搬されたメッセージには、例外がスローされたポイントにおける内容が入っています。 それには、ExceptionList の例外についての詳しい説明も含まれます。
TryCatch ノードのターミナルについては、次の表に説明されています。
ターミナル | 説明 |
---|---|
In | ノードが処理するメッセージを受け入れる入力ターミナル。 |
Catch | 例外がダウンストリームでスローされ、ノードによってキャッチされた場合に メッセージが伝搬される出力ターミナル。 |
Try | キャッチされない場合に、メッセージが伝搬される出力ターミナル。 |
以下の表でノードのプロパティーを説明します。M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、プロパティー・ダイアログにアスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 かどうかを示します (メッセージ・フローを bar ファイルに追加してデプロイするとき、値を変更できます)。
TryCatch ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |