package service import "errors" // 业务错误:HTTP 层按类型映射 403/400。 var ( ErrForbidden = errors.New("forbidden") ErrBadState = errors.New("bad state") ErrBadArg = errors.New("bad argument") ) // BizError 带给人看的文案。 type BizError struct { Kind error Msg string } func (e *BizError) Error() string { return e.Msg } func (e *BizError) Unwrap() error { return e.Kind } func Forbidden(msg string) error { return &BizError{Kind: ErrForbidden, Msg: msg} } func BadState(msg string) error { return &BizError{Kind: ErrBadState, Msg: msg} } func BadArg(msg string) error { return &BizError{Kind: ErrBadArg, Msg: msg} }