Documentation
¶
Overview ¶
Package xerrors 提供 Genesis 的轻量错误封装工具。
这个组件的目标不是替代标准库 errors,也不是提供完整的错误框架,而是在保持 Go 错误链语义不变的前提下,补齐几个高频且稳定的工程能力:
- 使用 Wrap / Wrapf 为错误追加上下文,同时保留 errors.Is / errors.As 链路
- 使用 WithCode / GetCode 为错误补充一个轻量的机器可读错误码
- 使用 Collector / Combine 简化多步骤校验和多错误合并
- 使用 Must / MustOK 处理初始化阶段的“失败即 panic”场景
xerrors 刻意保持克制。它当前不提供 stack trace、错误分类体系、并发安全的错误 聚合器,也不试图替应用统一建模所有协议层错误。对大多数业务代码来说,它更像 是“标准库 errors 的工程补充层”,而不是“另一套错误系统”。
Index ¶
- Variables
- func Combine(errs ...error) error
- func GetCode(err error) string
- func Must[T any](v T, err error) T
- func MustOK[T any](v T, ok bool) T
- func WithCode(err error, code string) error
- func Wrap(err error, msg string) error
- func Wrapf(err error, format string, args ...any) error
- type CodedError
- type Collector
- type MultiError
Constants ¶
This section is empty.
Variables ¶
View Source
var ( New = errors.New Is = errors.Is As = errors.As Unwrap = errors.Unwrap Join = errors.Join )
标准库函数再导出,便于组件统一从 xerrors 使用 errors 能力。
Functions ¶
func Combine ¶
Combine 将多个错误合并为一个。
规则如下:
- 全为 nil 时返回 nil
- 仅有一个非 nil 错误时直接返回该错误
- 多个非 nil 错误时返回 *MultiError
func WithCode ¶
WithCode 用错误码包装错误。
当前的 code 模型非常轻量,只包含一个字符串错误码,不承担更复杂的错误元数据职责。 WithCode(nil, code) 会返回 nil。
Types ¶
type CodedError ¶
CodedError 表示带有机器可读错误码的错误。
一般建议通过 WithCode 构造,而不是直接初始化该结构体。
func (*CodedError) Error ¶
func (e *CodedError) Error() string
func (*CodedError) Unwrap ¶
func (e *CodedError) Unwrap() error
type Collector ¶
type Collector struct {
// contains filtered or unexported fields
}
Collector 收集多个错误,但只保留第一个非 nil 错误。
它适合顺序执行的多步骤校验流程,不是并发安全的错误聚合器。
type MultiError ¶
type MultiError struct {
Errors []error
}
MultiError 表示多个错误的集合。
它实现 Unwrap() []error,因此兼容 errors.Is / errors.As 多错误匹配语义。
func (*MultiError) Error ¶
func (m *MultiError) Error() string
func (*MultiError) Unwrap ¶
func (m *MultiError) Unwrap() []error
Unwrap 返回内部错误切片,供 errors.Is / errors.As 遍历匹配。
Click to show internal directories.
Click to hide internal directories.