错误处理
Targo 的错误处理首先是 Go 风格的错误处理,而不是异常模型。
核心心智模型
- 普通失败通过返回值传递
- 常见形态是
[T, error | null] - 错误检查是显式的
panic()不是日常控制流工具
迁移时应该先改什么
如果你在从 TypeScript 迁移,优先改这几类代码:
1. try/catch 逻辑
优先改成:
- 返回
[result, err] - 逐层向上返回或包装错误
2. 隐式失败路径
不要让调用者靠“应该不会失败吧”来推断结果。
需要失败边界时,就把错误放进返回值。
3. Promise-style 错误传播
Targo 不存在 JS 异步异常链。
并发路径也应按 Go 风格显式传播失败。
实践建议
- 业务失败优先用
error | null - 需要上下文时包装错误,而不是只返回裸错误
- 需要稳定识别的错误场景,用明确的错误值或错误类型
- 只有在真正不可恢复时再考虑
panic()
常见误区
- 还在按 JS 异常模型思考错误传播
- 把
panic()当作普通错误返回的替代品 - 并发代码里只传成功值,不设计失败通道