canonical_id: "try_catch" display_name: "錯誤處理" category: "logic" version: "v1" wasi_target: "preview1" stability: "floating" runtime_compat: - "cf-workers" - "workerd" - "wazero" constraints: max_size_kb: 2048 max_cold_start_ms: 50 no_network_syscall: true no_filesystem_syscall: true io_model: "stdin_stdout_json" input_schema: type: object properties: result: {} error: type: string description: 上游錯誤訊息,非空則走 catch 分支 output_schema: type: object properties: success: type: boolean data: type: object properties: branch: type: string enum: [try, catch] result: {} error: type: string gherkin_tests: - scenario: "無錯誤走 try" given: '{"result":{"value":42},"error":""}' then_contains: '"branch":"try"' - scenario: "有錯誤走 catch" given: '{"result":null,"error":"something went wrong"}' then_contains: '"branch":"catch"' - scenario: "無效 JSON" given: 'not-json' then_contains: '{"success":false' tags: [builtin, control, try, catch, error, handling] description: "判斷上游結果是否有 error,決定走 try 或 catch 分支。" config_example: | my_try_catch: # 節點名稱(可自訂) result: "{{upstream.data}}" # 上游回傳的結果,任意型別(選填) error: "{{upstream.error}}" # 上游錯誤訊息,非空則走 catch 分支(選填)