catchノード¶
概要¶
catchノードは、フロー内で発生したエラーを検知し、後続ノードへ渡すためのノードです。
ロボシュタインのフローでは、functionノード、http requestノード、各種連携ノードなどでエラーが発生する場合があります。catchノードを使用すると、エラー発生時に通知を送信したり、エラー内容をdebugノードで確認したり、別の処理へつなげたりできます。
例えば、外部API連携に失敗した場合に管理者へメール通知する、functionノード内のJavaScriptエラーを確認する、処理失敗時にログを残す、といった用途で使用します。

具体的な活用例(エラー発生時に通知する)¶
フロー内でエラーが発生した場合に、catchノードで検知して通知する例です。
フローのイメージ図¶

エラー内容を確認するだけであれば、以下のように構成します。

① catchノードでエラーを検知する¶
catchノードは、「エラー取得元」で指定した範囲のノードでエラーが発生したときに動作します。 例えば「全てのノード」を指定した場合、同じフロー(タブ)内のどのノードでエラーが発生しても、catchノードがそのエラー情報を受け取り、後続ノードへ渡します。
② エラー内容を後続ノードで利用する¶
catchノードからは、エラーが発生したノードが受け取っていたメッセージに、エラー情報(msg.error)を追加したものが出力されます。
後続のtemplateノードでエラー通知文を作成したり、debugノードでエラー内容を確認したりできます。
例(templateノード):
エラー内容:{{error.message}}
③ 通知や後続処理につなげる¶
エラーを検知した後、メール送信ノードやチャット通知ノードへつなげることで、エラー発生時の通知フローを作成できます。
設定項目一覧¶
| 必須 | 項目名 | 説明 |
|---|---|---|
| ◯ | エラー取得元 | どの範囲のノードで発生したエラーを検知するかを「全てのノード」「同一グループ内」「選択したノード」から選択します。詳細は以下をご確認ください。 |
| Catchノードで処理済みのエラーを無視 | 他のcatchノードですでに検知されたエラーを対象外にします。エラー取得元が「全てのノード」の場合のみ表示されます。 | |
| 名前 | フローエディター上で表示されるノード名を任意で指定できます。 |
「エラー取得元」について¶
| エラー取得元 | 内容 |
|---|---|
| 全てのノード | catchノードと同じフロー(タブ)内にある、すべてのノードのエラーを検知します。 |
| 同一グループ内 | catchノードと同じグループ内にあるノードのエラーを検知します。 |
| 選択したノード | 一覧から選択したノードで発生したエラーのみを検知します。 |
通常は、まず「全てのノード」で設定してエラー通知や調査用に利用できます。特定の処理だけを監視したい場合は、「選択したノード」を指定すると、対象を絞り込めます。
検知できるのは同じフロー(タブ)内のエラーのみです
catchノードは、別のフロー(タブ)で発生したエラーは検知しません。エラーを検知したいフロー(タブ)ごとにcatchノードを配置してください。
「Catchノードで処理済みのエラーを無視」について¶
チェックを入れると、他のcatchノードで検知されなかったエラーのみを対象にできます。 複数のcatchノードを配置している場合に、同じエラーを複数箇所で処理したくないときに利用します。
例えば、特定ノード用のcatchノードと、全体用のcatchノードを分ける場合に使用します。
- 特定ノードのエラー → 個別のcatchノード(エラー取得元:選択したノード)で処理
- その他のエラー → 全体用のcatchノード(エラー取得元:全てのノード、Catchノードで処理済みのエラーを無視 にチェック)で処理
このチェックを入れない場合、特定ノードのエラーは個別のcatchノードと全体用のcatchノードの両方で検知され、通知が重複します。
catchノードで取得できる主な情報¶
| プロパティ | 内容 |
|---|---|
msg.error.message |
エラーメッセージが格納されます。 |
msg.error.source.name |
エラーが発生したノードの名前が格納されます。 |
msg.error.source.type |
エラーが発生したノードの種類(function、http request など)が格納されます。 |
msg.error.source.id |
エラーが発生したノードのIDが格納されます。 |
msg.payload など |
エラーが発生したノードが受け取っていたメッセージの内容が、そのまま引き継がれます。 |
エラー調査を行う場合は、debugノードの対象を msg.error または「msgオブジェクト全体」に設定して確認すると、エラー内容や発生元を把握しやすくなります。
例えば、functionノードでエラーが発生した場合、debugノードには以下のような内容が表示されます。
{
"payload": "元のデータ",
"error": {
"message": "テスト用のエラーです",
"source": {
"id": "(ノードのID)",
"type": "function",
"name": "エラーを発生させる",
"count": 1
}
}
}
利用例¶
例1:エラー内容をdebugノードで確認する¶
エラー発生時の内容を確認するための基本的な構成です。

debugノードの対象を msg.error または「msgオブジェクト全体」に設定すると、エラー内容を確認しやすくなります。
例2:エラー発生時にメール通知する¶
フロー内でエラーが発生した場合に、メールで通知する構成です。

templateノードでは、以下のような通知文を作成できます。
ロボシュタインのフローでエラーが発生しました。
発生したノード:{{error.source.name}}
エラー内容:
{{error.message}}
例3:特定ノードのエラーだけを検知する¶
外部API連携など、特定のノードで発生したエラーだけを検知したい場合は、エラー取得元を「選択したノード」に設定し、対象のhttp requestノードを選択します。

対象を絞ることで、不要なエラー通知を減らし、確認すべきエラーを明確にできます。
例4:エラー時に専用レスポンスを返す¶
http inノードを使ったAPI受付フローでエラーが発生した場合に、エラー用レスポンスを返す例です。

functionノードで、以下のようにレスポンスを設定します。
msg.statusCode = 500;
msg.payload = {
result: "error",
message: "処理中にエラーが発生しました"
};
return msg;
http responseノードでレスポンスを返すには、http inノードから引き継がれた msg.res が必要です。エラーが発生したノードまで msg.res が引き継がれていない場合はレスポンスを返せないため、動作確認を行ってください。
注意点¶
すべての異常がcatchノードで検知されるわけではない¶
catchノードは、ノードがエラーとして通知した内容を検知するためのノードです。
例えば、http requestノードでHTTPステータスコード 404 や 500 が返った場合でも、通信自体が成立している場合はエラーにはならず、通常のレスポンスとして後続ノードへ渡されます。
APIの処理結果を判定したい場合は、catchノードだけでなく、msg.statusCode をswitchノードで判定してください。
http requestノードは、通信エラー時も後続ノードへメッセージを渡す(初期設定の場合)¶
接続先が見つからない場合など、通信自体に失敗した場合、http requestノードはエラーとしてcatchノードに検知されると同時に、後続ノードにもメッセージを渡します。
このとき msg.statusCode には "ENOTFOUND" のようなエラーコード(文字列)が、msg.payload にはエラーメッセージが格納されます。
後続ノードの処理が想定外に動かないよう、必要に応じてswitchノードで msg.statusCode を判定してください。
なお、http requestノードの「2xx以外の応答をcatchノードへ送信」にチェックを入れると、通信エラー時は後続ノードへメッセージを渡さず、catchノードにのみエラーが送られます。
catchノード自体には入力ポートがない¶
catchノードは、他のノードから線で入力を受けるノードではありません。 フロー内で発生したエラーを検知して動作するため、入力ポートはありません。後続の通知ノードやdebugノードへ接続して使用します。
エラー通知の重複に注意する¶
catchノードを複数配置している場合、設定によっては同じエラーを複数のcatchノードで検知します。 例えば「全てのノード」のcatchノードと「選択したノード」のcatchノードを両方配置すると、選択したノードのエラーは両方のcatchノードで検知されます。 重複させたくない場合は、全体用のcatchノードで「Catchノードで処理済みのエラーを無視」にチェックを入れてください。
エラー発生元を確認する¶
エラー通知を行う場合は、エラー内容だけでなく、どのノードで発生したエラーかも確認できるようにしておくと、調査しやすくなります。
通知文には、msg.error.source.name などの発生元の情報も含めると便利です。
エラー後の処理を設計しておく¶
catchノードでエラーを検知した後、通知だけ行うのか、リトライするのか、処理を中断するのか、別フローへ連携するのかを事前に決めておくと、運用しやすくなります。 エラーを検知するだけでなく、エラー発生時にどう対応するかまで含めて設計してください。
関連ノード¶
- debugノード:catchノードで取得したエラー内容を確認する場合に使用します。
- templateノード:エラー通知文を作成する場合に使用します。
- メール送信ノード:エラー発生時にメール通知する場合に使用します。
- switchノード:エラー内容やステータスコードに応じて処理を分岐する場合に使用します。
- changeノード:エラー通知用の件名や本文を設定する場合に使用します。
- functionノード:エラー内容を整形したり、通知用データを作成する場合に使用します。
- http responseノード:http inノードで受けたリクエストに対し、エラー時のレスポンスを返す場合に使用します。
まとめ¶
catchノードは、フロー内で発生したエラーを検知し、後続ノードへ渡すためのノードです。
エラー内容は msg.error に格納され、debugノードで確認したり、templateノードやメール送信ノードと組み合わせて通知したりできます。
また、エラー取得元を「全てのノード」「同一グループ内」「選択したノード」から選択できるため、フロー全体のエラーをまとめて検知したり、特定ノードのエラーだけを検知したりできます。
ただし、すべての異常がcatchノードで検知されるわけではありません。HTTPステータスコードや業務上のエラー判定は、switchノードなどで別途判定してください。