error 接口
# error 接口
error 是只有 Error() string 方法的接口。可预期失败应作为返回值处理,并使用 %w 保留底层错误链。
var ErrNotFound = errors.New("service not found")
func load(name string) error {
if _, ok := registry[name]; !ok {
return fmt.Errorf("load %q: %w", name, ErrNotFound)
}
return nil
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
调用方使用 errors.Is 判断稳定错误类别,使用 errors.As 提取自定义错误类型。错误通常只处理一次:底层补充上下文并返回,应用边界统一记录或转成响应,避免重复日志。