Documentation ¶
Index ¶
- Variables
- func Cause(err error) error
- func Code(err error) int
- func Current(err error) error
- func Equal(err, target error) bool
- func HasCode(err error, code int) bool
- func HasError(err, target error) bool
- func HasStack(err error) bool
- func Is(err, target error) bool
- func New(text string) error
- func NewC(code int, text string) error
- func NewCf(code int, format string, args ...any) error
- func NewCode(code int, text ...string) error
- func NewCodeSkip(code int, skip int, text ...string) error
- func NewCodeSkipf(code int, skip int, format string, args ...any) error
- func NewCodef(code int, format string, args ...any) error
- func NewOption(option Option) error
- func NewSkip(skip int, text string) error
- func NewSkipC(code, skip int, text string) error
- func NewSkipCf(code, skip int, format string, args ...any) error
- func NewSkipf(skip int, format string, args ...any) error
- func Newf(format string, args ...any) error
- func Stack(err error) string
- func Unwrap(err error) error
- func Wrap(err error, text string) error
- func WrapCode(code int, err error, text ...string) error
- func WrapCodeSkip(code int, skip int, err error, text ...string) error
- func WrapCodeSkipf(code int, skip int, err error, format string, args ...any) error
- func WrapCodef(code int, err error, format string, args ...any) error
- func WrapSkip(skip int, err error, text string) error
- func WrapSkipf(skip int, err error, format string, args ...any) error
- func Wrapf(err error, format string, args ...any) error
- type Error
- func (err *Error) Cause() error
- func (err *Error) Code() int
- func (err *Error) Current() error
- func (err *Error) Equal(target error) bool
- func (err *Error) Error() string
- func (err *Error) Format(s fmt.State, verb rune)
- func (err *Error) Is(target error) bool
- func (err Error) MarshalJSON() ([]byte, error)
- func (err *Error) SetCode(code int)
- func (err *Error) Stack() string
- func (err *Error) Unwrap() error
- type ICause
- type ICode
- type ICurrent
- type IEqual
- type IIs
- type IStack
- type IUnwrap
- type Option
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( // IsUsingBriefStack 简短错误堆栈的开关。(默认为true) IsUsingBriefStack bool )
Functions ¶
func Equal ¶
Example ¶
package main import ( "errors" "fmt" "github.com/mooncake9527/x/xerrors/xcode" "github.com/mooncake9527/x/xerrors/xerror" ) func main() { err1 := errors.New("permission denied") err2 := xerror.New("permission denied") err3 := xerror.NewCode(xcode.CodeNotAuthorized, "permission denied") fmt.Println(xerror.Equal(err1, err2)) fmt.Println(xerror.Equal(err2, err3)) }
Output: true false
func Is ¶
Example ¶
package main import ( "errors" "fmt" "github.com/mooncake9527/x/xerrors/xerror" ) func main() { err1 := errors.New("permission denied") err2 := xerror.Wrap(err1, "operation failed") fmt.Println(xerror.Is(err1, err1)) fmt.Println(xerror.Is(err2, err2)) fmt.Println(xerror.Is(err2, err1)) fmt.Println(xerror.Is(err1, err2)) }
Output: false true true false
func NewCode ¶
NewCode 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。
Example ¶
package main import ( "fmt" "github.com/mooncake9527/x/xerrors/xerror" ) func main() { err := xerror.NewCode(10000, "My Error") fmt.Println(err.Error()) fmt.Println(xerror.Code(err)) }
Output: My Error 10000
func NewCodeSkip ¶
NewCodeSkip 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
func NewCodeSkipf ¶
NewCodeSkipf 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
func NewCodef ¶
NewCodef 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。
Example ¶
package main import ( "fmt" "github.com/mooncake9527/x/xerrors/xerror" ) func main() { err := xerror.NewCodef(10000, "It's %s", "My Error") fmt.Println(err.Error()) fmt.Println(xerror.Code(err)) }
Output: It's My Error 10000
func NewSkip ¶
NewSkip 用于创建一个自定义错误信息的 error 对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。 参数 `skip` 指定堆栈跳过的层数。
func WrapCode ¶
WrapCode 用 error 和文本包裹错误。
Example ¶
package main import ( "errors" "fmt" "github.com/mooncake9527/x/xerrors/xerror" ) func main() { err1 := errors.New("permission denied") err2 := xerror.WrapCode(10000, err1, "Custom Error") fmt.Println(err2.Error()) fmt.Println(xerror.Code(err2)) }
Output: Custom Error: permission denied 10000
func WrapCodeSkip ¶
WrapCodeSkip 用 error 和文本包裹错误,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
func WrapCodeSkipf ¶
WrapCodeSkipf 用 error 和格式指定符包裹错误,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。
func WrapCodef ¶
WrapCodef 用 error 和格式指定符包裹错误。
Example ¶
package main import ( "errors" "fmt" "github.com/mooncake9527/x/xerrors/xerror" ) func main() { err1 := errors.New("permission denied") err2 := xerror.WrapCodef(10000, err1, "It's %s", "Custom Error") fmt.Println(err2.Error()) fmt.Println(xerror.Code(err2)) }
Output: It's Custom Error: permission denied 10000
Types ¶
type Error ¶
type Error struct {
// contains filtered or unexported fields
}
Error 自定义错误对象。
func (*Error) Format ¶
Format 根据 `fmt.Formatter` 接口格式化。
%v, %s : 打印所有错误字符串; %-v, %-s : 打印当前级别错误字符串; %+s : 打印完整堆栈错误列表; %+v : 打印错误字符串和完整堆栈错误列表
func (Error) MarshalJSON ¶
MarshalJSON 实现 json.Marshal 接口。 注:这里不要使用指针作为其接收器。