Documentation ¶
Index ¶
- Variables
- func Cause(err error) error
- func Code(err error) gcode.Code
- func Current(err error) error
- func Equal(err, target error) bool
- func HasCode(err error, code gcode.Code) bool
- func HasError(err, target error) bool
- func HasStack(err error) bool
- func Is(err, target error) bool
- func New(text string) error
- func NewCode(code gcode.Code, text ...string) error
- func NewCodeSkip(code gcode.Code, skip int, text ...string) error
- func NewCodeSkipf(code gcode.Code, skip int, format string, args ...any) error
- func NewCodef(code gcode.Code, format string, args ...any) error
- func NewOption(option Option) error
- func NewSkip(skip int, text string) 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 gcode.Code, err error, text ...string) error
- func WrapCodeSkip(code gcode.Code, skip int, err error, text ...string) error
- func WrapCodeSkipf(code gcode.Code, skip int, err error, format string, args ...any) error
- func WrapCodef(code gcode.Code, 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() gcode.Code
- 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 gcode.Code)
- 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 ¶
Equal 错误对象比较。
Example ¶
package main import ( "errors" "fmt" "github.com/camry/g/gerrors/gcode" "github.com/camry/g/gerrors/gerror" ) func main() { err1 := errors.New("permission denied") err2 := gerror.New("permission denied") err3 := gerror.NewCode(gcode.CodeNotAuthorized, "permission denied") fmt.Println(gerror.Equal(err1, err2)) fmt.Println(gerror.Equal(err2, err3)) }
Output: true false
func Is ¶
Is 包含判断。
Example ¶
package main import ( "errors" "fmt" "github.com/camry/g/gerrors/gerror" ) func main() { err1 := errors.New("permission denied") err2 := gerror.Wrap(err1, "operation failed") fmt.Println(gerror.Is(err1, err1)) fmt.Println(gerror.Is(err2, err2)) fmt.Println(gerror.Is(err2, err1)) fmt.Println(gerror.Is(err1, err2)) }
Output: false true true false
func NewCode ¶
NewCode 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。
Example ¶
package main import ( "fmt" "github.com/camry/g/gerrors/gcode" "github.com/camry/g/gerrors/gerror" ) func main() { err := gerror.NewCode(gcode.New(10000, "", nil), "My Error") fmt.Println(err.Error()) fmt.Println(gerror.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/camry/g/gerrors/gcode" "github.com/camry/g/gerrors/gerror" ) func main() { err := gerror.NewCodef(gcode.New(10000, "", nil), "It's %s", "My Error") fmt.Println(err.Error()) fmt.Println(gerror.Code(err).Code()) }
Output: It's My Error 10000
func NewSkip ¶
NewSkip 用于创建一个自定义错误信息的 error 对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。 参数 `skip` 指定堆栈跳过的层数。
func WrapCode ¶
WrapCode 用 error 和文本包裹错误。
Example ¶
package main import ( "errors" "fmt" "github.com/camry/g/gerrors/gcode" "github.com/camry/g/gerrors/gerror" ) func main() { err1 := errors.New("permission denied") err2 := gerror.WrapCode(gcode.New(10000, "", nil), err1, "Custom Error") fmt.Println(err2.Error()) fmt.Println(gerror.Code(err2).Code()) }
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/camry/g/gerrors/gcode" "github.com/camry/g/gerrors/gerror" ) func main() { err1 := errors.New("permission denied") err2 := gerror.WrapCodef(gcode.New(10000, "", nil), err1, "It's %s", "Custom Error") fmt.Println(err2.Error()) fmt.Println(gerror.Code(err2).Code()) }
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 接口。 注:这里不要使用指针作为其接收器。