// try_catch — 判斷上游結果是否有 error,決定走 try 或 catch 分支 // //go:build tinygo package main import ( "encoding/json" "io" "os" ) type Input struct { Result json.RawMessage `json:"result"` Error string `json:"error"` } func main() { raw, err := io.ReadAll(os.Stdin) if err != nil { writeError("failed to read stdin: " + err.Error()) return } var input Input if err := json.Unmarshal(raw, &input); err != nil { writeError("invalid input JSON: " + err.Error()) return } if input.Error != "" { out, _ := json.Marshal(map[string]interface{}{ "success": true, "data": map[string]interface{}{ "branch": "catch", "error": input.Error, }, }) os.Stdout.Write(out) return } out, _ := json.Marshal(map[string]interface{}{ "success": true, "data": map[string]interface{}{ "branch": "try", "result": input.Result, }, }) os.Stdout.Write(out) } func writeError(msg string) { out, _ := json.Marshal(map[string]interface{}{"success": false, "error": msg}) os.Stdout.Write(out) }