SuperAPI AI 工具集

result-pattern

编程与开发

查看项目

更新于 10-15 23:33

技能介绍

用途:Result Pattern 将操作结果封装为 Result<T>,表示成功或失败,用于处理预期内的业务错误(如校验失败、未找到、未授权),而非抛出异常。它提供显式错误路径,并强制调用方处理错误。

主要能力:提供 Result.ok 与 Result.fail 构造成功/失败;通过 flatMap 链式组合多个可能失败的操作,前一步失败则自动传播;服务层返回 Result,控制器将错误码映射为不同 HTTP 状态码;前端可在 React Hook 中使用 Result,以类型化错误码驱动 UI 状态,避免 try/catch 泄漏到组件。

使用方式:定义 Result<T> 类,包含 isSuccess、value、error 字段及 ok、fail、flatMap 方法。业务函数返回 Result,调用方检查 isSuccess 后取 value 或 error。链式调用示例:parseAge("25").flatMap(validateAge)。服务层返回 Result.ok/Result.fail,控制器用状态码映射表将错误码转为 HTTP 状态。

适用场景:预期业务错误、可失败操作的链式组合、跨层类型安全错误处理、需按错误类型返回不同 HTTP 状态的 API 端点。

限制与注意:不适用于真正意外的错误(空指针、内存不足)——应抛异常;不用于不会失败的简单 getter 或内部私有辅助函数。团队不熟悉时有学习曲线,建议逐步引入。异步链中 flatMap 需每步 await 或配合 Promise.all。会抛异常的第三方库应在边界处用 try/catch 转换为 Result。不要为每个私有辅助函数都套 Result,仅用于公共 API 表面和调用方需显式处理的操作。异常用于程序员错误,Result 用于业务错误,两者结合使用。