xerror

package
v1.0.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 6, 2024 License: Apache-2.0 Imports: 8 Imported by: 26

Documentation

Index

Examples

Constants

This section is empty.

Variables

View Source
var (
	// IsUsingBriefStack 简短错误堆栈的开关。(默认为true)
	IsUsingBriefStack bool
)

Functions

func Cause

func Cause(err error) error

Cause 获取根错误 error。 如果 `err` 是 nil, 则返回 nil。

func Code

func Code(err error) int

Code 获取 error 中的错误码接口。

func Current

func Current(err error) error

Current 获取当前 error。 如果当前错误是 nil, 则返回 nil。

func Equal

func Equal(err, target error) bool
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 HasCode

func HasCode(err error, code int) bool

HasCode 检查并报告 `err` 在其链接错误中是否具有 `code`。

func HasError

func HasError(err, target error) bool

func HasStack

func HasStack(err error) bool

HasStack 判断错误是否带堆栈,实现 `xerror.IStack` 接口。

func Is

func Is(err, target error) bool
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 New

func New(text string) error

New 用于创建一个自定义文本错误信息的 error 对象,并包含堆栈信息。

func NewC added in v1.0.6

func NewC(code int, text string) error

func NewCf added in v1.0.6

func NewCf(code int, format string, args ...any) error

func NewCode

func NewCode(code int, text ...string) error

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

func NewCodeSkip(code int, skip int, text ...string) error

NewCodeSkip 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。

func NewCodeSkipf

func NewCodeSkipf(code int, skip int, format string, args ...any) error

NewCodeSkipf 用于创建一个自定义错误信息的 error 对象,并包含堆栈信息,并增加错误码对象的输入。并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。

func NewCodef

func NewCodef(code int, format string, args ...any) error

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 NewOption

func NewOption(option Option) error

NewOption 用于自定义配置的错误对象创建。

func NewSkip

func NewSkip(skip int, text string) error

NewSkip 用于创建一个自定义错误信息的 error 对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。高级功能,一般开发者很少用得到。 参数 `skip` 指定堆栈跳过的层数。

func NewSkipC added in v1.0.6

func NewSkipC(code, skip int, text string) error

func NewSkipCf added in v1.0.6

func NewSkipCf(code, skip int, format string, args ...any) error

func NewSkipf

func NewSkipf(skip int, format string, args ...any) error

NewSkipf 用于创建一个自定义错误信息的error对象,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。 参数 `skip` 指定堆栈跳过的层数。

func Newf

func Newf(format string, args ...any) error

Newf 用于创建一个自定义文本错误带参数信息的 error 对象,并包含堆栈信息。

func Stack

func Stack(err error) string

Stack 获取堆栈信息。 如果 `err` 是 nil, 则返回空字符串。 如果 `err` 不支持堆栈,它将直接返回错误字符串。

func Unwrap

func Unwrap(err error) error

Unwrap 获取下一层 error。 如果当前级别错误或下一个级别错误为 nil,则返回 nil。

func Wrap

func Wrap(err error, text string) error

Wrap 用于包裹其他错误 error 对象,构造成多级的错误信息,包含堆栈信息。 注:它不会丢失包装错误的错误码,因为它从中继承了错误码。

func WrapCode

func WrapCode(code int, err error, text ...string) error

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

func WrapCodeSkip(code int, skip int, err error, text ...string) error

WrapCodeSkip 用 error 和文本包裹错误,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。

func WrapCodeSkipf

func WrapCodeSkipf(code int, skip int, err error, format string, args ...any) error

WrapCodeSkipf 用 error 和格式指定符包裹错误,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。

func WrapCodef

func WrapCodef(code int, err error, format string, args ...any) error

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

func WrapSkip

func WrapSkip(skip int, err error, text string) error

WrapSkip 用于包裹其他错误 error 对象,构造成多级的错误信息,包含堆栈信息,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。

func WrapSkipf

func WrapSkipf(skip int, err error, format string, args ...any) error

WrapSkipf 用于包裹其他错误 error 对象,构造成多级的错误信息,包含堆栈信息,并且忽略部分堆栈信息(按照当前调用方法位置往上忽略)。

func Wrapf

func Wrapf(err error, format string, args ...any) error

Wrapf 用于包裹其他错误 error 对象,构造成多级的错误信息,包含堆栈信息。

Types

type Error

type Error struct {
	// contains filtered or unexported fields
}

Error 自定义错误对象。

func (*Error) Cause

func (err *Error) Cause() error

Cause 获取根错误 error。

func (*Error) Code

func (err *Error) Code() int

Code 获取错误码。 如果没有错误代码,则返回 `xcode.CodeDefault`。

func (*Error) Current

func (err *Error) Current() error

Current 获取当前 error。 如果当前错误是 nil, 则返回 nil。

func (*Error) Equal

func (err *Error) Equal(target error) bool

Equal 错误对象比较。 如果它们的 `code` 和 `text` 都相同,则认为错误相同。

func (*Error) Error

func (err *Error) Error() string

Error 实现错误的接口,它将所有错误返回为字符串。

func (*Error) Format

func (err *Error) Format(s fmt.State, verb rune)

Format 根据 `fmt.Formatter` 接口格式化。

%v, %s : 打印所有错误字符串; %-v, %-s : 打印当前级别错误字符串; %+s : 打印完整堆栈错误列表; %+v : 打印错误字符串和完整堆栈错误列表

func (*Error) Is

func (err *Error) Is(target error) bool

Is 当前错误 `err` 的链接错误中是否包含错误 `target`。

func (Error) MarshalJSON

func (err Error) MarshalJSON() ([]byte, error)

MarshalJSON 实现 json.Marshal 接口。 注:这里不要使用指针作为其接收器。

func (*Error) SetCode

func (err *Error) SetCode(code int)

SetCode 使用指定 `code` 更新内部 `code` 。

func (*Error) Stack

func (err *Error) Stack() string

Stack 以字符串形式返回错误堆栈信息。

func (*Error) Unwrap

func (err *Error) Unwrap() error

Unwrap 获取下一层 error。

type ICause

type ICause interface {
	Error() string
	Cause() error
}

ICause Cause 接口。

type ICode

type ICode interface {
	Error() string
	Code() int
}

ICode Code 接口。

type ICurrent

type ICurrent interface {
	Error() string
	Current() error
}

ICurrent Current 接口。

type IEqual

type IEqual interface {
	Error() string
	Equal(target error) bool
}

IEqual Equal 接口。

type IIs

type IIs interface {
	Error() string
	Is(target error) bool
}

IIs Is 接口。

type IStack

type IStack interface {
	Error() string
	Stack() string
}

IStack Stack 接口。

type IUnwrap

type IUnwrap interface {
	Error() string
	Unwrap() error
}

IUnwrap Unwrap 接口。

type Option

type Option struct {
	Error error  // 包装错误(如果有)。
	Stack bool   // 是否将堆栈信息记录到错误中。
	Text  string // 错误文本,由 New* 函数创建
	Code  int    // 如有必要,错误码。
}

Option 自定义的错误创建。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL