Skip to content

brickingsoft/errors

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

errors

增强错误。

使用于错误定位、序列化、传输或存储等。

安装

go get -u github.com/brickingsoft/errors

使用

使用github.com/brickingsoft/errors代替errors

e1 := errors.Define("e1")
e2 := errors.New("e2", errors.WithWrap(e1))
e3 := errors.New("e3", errors.WithWrap(e2),
    errors.WithMeta("s", "s"),
    errors.WithMeta("i", 1),
    errors.WithMeta("i32", int32(32)),
    errors.WithMeta("i64", int64(-64)),
    errors.WithMeta("u", uint(1)),
    errors.WithMeta("u64", uint64(64)),
    errors.WithMeta("f32", float32(32.32)),
    errors.WithMeta("f64", 64.640),
    errors.WithMeta("b", true),
    errors.WithMeta("any", struct{}{}),
    errors.WithMeta("byte", 'b'),
    errors.WithMeta("bytes", []byte("hello world")),
    errors.WithMeta("time", time.Now()),
    errors.WithMeta("ss", []string{"a a", "b"}),
    errors.WithDescription("desc"),
    errors.WithOccur(),
)
ok := errors.Is(e3, e1)
// ...

标准输出:

EnhancedError:
>>>>>>>>>>>>>
ERRO      = message
DESC      = desc
META      = [s: s] [i: 1] [i32: 32] [i64: -64] [u: 1] [u64: 64] [f32: 32.32] [f64: 64.64] [b: true] [any: {}] [byte: 98] [bytes: hello world] [time: 2025-02-04T22:32:36+08:00] [ss: [a a b]]
OCCU      = 2025-02-04T22:32:36+08:00
FUNC      = github.com/brickingsoft/errors_test.TestErr
SEEK      = github.com/brickingsoft/errors/error_test.go:18
<<<<<<<<<<<<<
>>>>>>>>>>>>>
ERRO      = wrapped
<<<<<<<<<<<<<

Json:

{
    "Message": "e3",
    "Description": "desc",
    "Stacktrace": {
        "Fn": "github.com/brickingsoft/errors_test.TestJson",
        "File": "github.com/brickingsoft/errors/error_test.go",
        "Line": 46
    },
    "Occur": "2025-02-04T22:34:36.2413536+08:00",
    "Meta": [
        {
            "Key": "s",
            "Value": "s"
        }
    ],
    "Wrapped": {
        "Message": "e2",
        "Description": "",
        "Stacktrace": {
            "Fn": "github.com/brickingsoft/errors_test.TestJson",
            "File": "github.com/brickingsoft/errors/error_test.go",
            "Line": 44
        },
        "Occur": "0001-01-01T00:00:00Z",
        "Meta": null,
        "Wrapped": {
            "Message": "e1",
            "Description": "",
            "Stacktrace": {
                "Fn": "",
                "File": "",
                "Line": 0
            },
            "Occur": "0001-01-01T00:00:00Z",
            "Meta": null,
            "Wrapped": null
        }
    }
}

函数说明

errors.New 创建一个增强错误。

errors.From 从一个错误中创建一个增强错误。

errors.Define 定义一个标准错误,一般用于错误判断时的 target,以及配合 errors.From 使用。

errors.WithWrap 在错误中添加包裹。

errors.WithMeta 为错误设置元数据,用于标注。

errors.WithDescription 为错误设置描述,一般用于 message 是枚举值。

errors.WithOccur 为错误设置发生时间。

About

Enhanced go error

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages