SuperAPI AI 工具集

golang-error-handling

编程与开发

查看项目

更新于 10-15 22:13

技能介绍

用途:提供 Go 语言错误处理的标准与规范,适用于包装错误、定义哨兵错误或按 Go 惯例处理错误的场合。

主要能力:强调错误是值,应像普通值一样处理;主张“只处理一次”,即记录日志或返回错误,不要同时做两件事以免产生重复日志;要求为错误添加上下文,用 fmt.Errorf("failed to open file: %w", err) 包装而非直接向上冒泡;建议使用 Go 1.13+ 标准库 errors 包(Is、As、Unwrap),避免已弃用的 pkg/errors。

具体准则:哨兵错误为已导出的固定错误(如 io.EOF、sql.ErrNoRows),用 errors.Is(err, io.EOF) 判断;错误类型为实现 error 接口的结构体,用 errors.As(err, &target) 判断;panic 仅用于不可恢复的启动错误。

反模式:禁止赤裸的 return err,应先包装以保留调用链;禁止用字符串比较检查错误,应使用 errors.Is/errors.As;禁止吞掉错误,不得把错误赋给 _,必须处理或传播。

限制:未提供具体代码示例、安装命令、平台或版本细节;上述内容仅依据给定资料,其他信息暂未提供。