SuperAPI AI 工具集

go-error-handling

编程与开发

查看项目

更新于 10-15 21:47

技能介绍

用途:该技能为 Go 应用提供健壮的错误处理指南,在编写、审查或重构涉及错误创建、传播与处理的 Go 代码时应用。

适用时机:创建返回错误的新函数或方法;实现与数据库或外部服务交互的仓储层或服务层;构建需要把错误转换为状态码的 gRPC 或 HTTP 处理器;审查错误处理模式;调试错误传播问题。

核心原则:资料给出一个错误处理决策流程——错误发生时,先判断是否来自外部依赖(数据库、API 等):是则映射为领域错误并用 %w 包装;否则判断是否为业务规则违反:是则返回相应领域错误,否则包装并携带上下文继续传播。在处理器层,记录完整错误,向客户端返回安全消息。

参考文档:error-wrapping.md 说明如何用 %w 包装错误以检查错误链,适用于从函数返回错误并保留错误链,尤其是调用方需要使用 errors.Is() 或 errors.As() 时;error-types.md 说明哨兵错误与类型化错误的取舍,即在 var ErrXxx = errors.New() 与自定义错误结构体之间如何选择,需要附加资源 ID、权限等元数据时优先使用类型化错误;error-domain-error.md 说明领域特定错误的定义与使用,适用于构建仓储或服务层,将技术特定错误(如 sql.ErrNoRows)映射为领域错误,使业务逻辑与基础设施解耦;server-grpc-error.md 说明 gRPC 错误处理与状态码,适用于实现 gRPC 处理器,涵盖将领域错误映射为 gRPC 状态码以及添加字段违规等丰富错误详情。

限制:资料未提供具体安装命令、代码示例、平台支持范围或收费信息,暂未提供。