gookit/goutil/errorx 函数整理

65 阅读2分钟

errorx的函数很多,其中会返回error的有这些:

func Cause(err error) error
func E(msg string) error
func Ef(tpl string, vars ...any) error
func Err(msg string) error
func Errf(tpl string, vars ...any) error
func Errorf(tpl string, vars ...any) error
func IsFalse(result bool, fmtAndArgs ...any) error
func IsIn[T comdef.ScalarType](value T, list []T, fmtAndArgs ...any) error
func IsTrue(result bool, fmtAndArgs ...any) error
func New(msg string) error
func Newf(tpl string, vars ...any) error
func NotIn[T comdef.ScalarType](value T, list []T, fmtAndArgs ...any) error
func Previous(err error) error
func Raw(msg string) error
func Rawf(tpl string, vars ...any) error
func Stacked(err error) error
func Traced(err error) error
func Unwrap(err error) error
func With(err error, msg string) error
func WithOptions(msg string, fns ...func(opt *ErrStackOpt)) error
func WithPrev(err error, msg string) error
func WithPrevf(err error, tpl string, vars ...any) error
func WithStack(err error) error
func Withf(err error, tpl string, vars ...any) error
func Wrap(err error, msg string) error
func Wrapf(err error, tpl string, vars ...any) error

再根据文档做一下归类:

原生错误 - 不要调用
func E(msg string) error
func Ef(tpl string, vars ...any) error
func Err(msg string) error
func Errf(tpl string, vars ...any) error
func Raw(msg string) error
func Rawf(tpl string, vars ...any) error


别名 - 不要调用
func Errorf(tpl string, vars ...any) error  ->  Newf
func Previous(err error) error
func Stacked(err error) error
func Traced(err error) error
func WithPrev(err error, msg string) error
func WithPrevf(err error, tpl string, vars ...any) error


带栈 - 需要追踪错误时调用
func New(msg string) error
func Newf(tpl string, vars ...any) error
func WithStack(err error) error
func With(err error, msg string) error
func Withf(err error, tpl string, vars ...any) error


无栈 - 暂不需要
func Wrap(err error, msg string) error
func Wrapf(err error, tpl string, vars ...any) error


解构 - 暂不需要
func Cause(err error) error
func Unwrap(err error) error


高级 - 暂不需要
func IsFalse(result bool, fmtAndArgs ...any) error
func IsIn[T comdef.ScalarType](value T, list []T, fmtAndArgs ...any) error
func IsTrue(result bool, fmtAndArgs ...any) error
func NotIn[T comdef.ScalarType](value T, list []T, fmtAndArgs ...any) error
func WithOptions(msg string, fns ...func(opt *ErrStackOpt)) error

返回go原生error的方法,直接调用errros.New()就好了,没必要多一层嵌套。

别名函数就不调用了,免得混淆。

不带栈的wrap,目前项目没使用场景,暂不需要。
用于解包的,和其它高级的,也暂不需要。

所以真正有用的就几个方法:

带栈 - 需要追踪错误时调用
func New(msg string) error
func Newf(tpl string, vars ...any) error
func WithStack(err error) error
func With(err error, msg string) error
func Withf(err error, tpl string, vars ...any) error

这么一归类,用起来就简单多了。