# エラーと再試行

Source: https://openflow.run/ja/docs/concepts/errors-and-retries/
Language: ja
Product version: 0.1.0-beta.77

タスクの再試行、エラー値を使った続行、実行の停止を選択します。

再試行は、同じ入力でタスク全体を繰り返します。エラー処理は、対応する最終失敗をシステムのエラー値に変換します。両者は独立した設定で、結果も異なります。

## タスクの再試行

Code、Connector、OpenAPI、LLM、AI Decision は `retry` に対応します。`maxRetries` は追加試行回数で 0–5、`intervalMs` は 1,000–60,000 ミリ秒の範囲の整数秒です。

```json
{
  "op": "node.update",
  "node": "NODE_REFERENCE",
  "set": { "retry": { "maxRetries": 2, "intervalMs": 5000 } }
}
```

再試行は外部操作を繰り返す可能性があります。実行期限をリセットしたり、制限を回避したり、結果未確認の操作を再実行したりはしません。Agent、ワークフロー呼び出し、トリガー、Wait、Approval はこの再試行ポリシーに対応しません。

## エラーを処理する

同じ 5 種類のタスクは `onError: "error"` にも対応し、デフォルトは `"stop"` です。再試行がある場合は最後の試行後に適用します。対応する入力・出力の検証エラーは処理できますが、再試行はしません。

成功時のシステム `error` は null です。失敗を処理すると、構造化エラーを出力して通常の実行エッジを続行します。その失敗した呼び出しの業務出力はコミットしません。

```json
{
  "kind": "system",
  "node": "NODE_REFERENCE",
  "port": "error"
}
```

Condition で null とエラーオブジェクトを判別できます。処理済みエラーの経路から到達する下流の業務入力では、欠損値や null を許容する必要があります。専用のエラー実行エッジはありません。

## 通常のエラーとして処理できない失敗

取消し、期限切れ、リソース制限、隔離の失敗、永続化の失敗、結果不明の外部操作は、通常の処理可能な業務エラーに変換できません。

## ワークフロー単位の処理

[Flow Error](https://openflow.run/ja/docs/nodes/error/index.md) は、対象となる本番の失敗に対して別の処理実行を開始します。ノード単位の catch ではなく、元の実行の失敗を消したり、再実行の安全性を保証したりはしません。

## 参照元

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md#node-retries)
*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md#node-error-handling)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#node-retry-policy)
