Skip to content

错误处理

Targo 的错误处理首先是 Go 风格的错误处理,而不是异常模型。

核心心智模型

  • 普通失败通过返回值传递
  • 常见形态是 [T, error | null]
  • 错误检查是显式的
  • panic() 不是日常控制流工具

迁移时应该先改什么

如果你在从 TypeScript 迁移,优先改这几类代码:

1. try/catch 逻辑

优先改成:

  • 返回 [result, err]
  • 逐层向上返回或包装错误

2. 隐式失败路径

不要让调用者靠“应该不会失败吧”来推断结果。
需要失败边界时,就把错误放进返回值。

3. Promise-style 错误传播

Targo 不存在 JS 异步异常链。
并发路径也应按 Go 风格显式传播失败。

实践建议

  • 业务失败优先用 error | null
  • 需要上下文时包装错误,而不是只返回裸错误
  • 需要稳定识别的错误场景,用明确的错误值或错误类型
  • 只有在真正不可恢复时再考虑 panic()

常见误区

  • 还在按 JS 异常模型思考错误传播
  • panic() 当作普通错误返回的替代品
  • 并发代码里只传成功值,不设计失败通道

对应 Reference