Golang 入门资料+笔记

一个Go语言的errors通用库

2023-02-22  本文已影响0人  爱翻身的咸鱼

这是一个用于产生错误信息对象的库。

首先,需要导入包名到程序中:

import "github.com/gxsshallot/errors"

(可选) 全局开启/禁用调用栈信息:

errors.EnableStack = true/false

(可选) 设置全局的错误码和错误消息的映射关系:

const (
    CodeError1 = 1000
    ...
    SubCodeError11 = 10001
    ...
)

errors.GlobalCodes.Add(CodeError1, "err1")
errors.GlobalSubCodes.Add(SubCodeError11, "suberr1")

// 如果需要删除的话
errors.GlobalCodes.Del(CodeError1)
errors.GlobalSubCodes.Del(SubCodeError11)

// 可以直接获取错误码对应的错误消息
msg := errors.GlobalCodes.Get(CodeError1)
subMsg := errors.GlobalSubCodes.Get(SubCodeError11)

在程序中使用NewXXX方法,生成error对象:

// 从全局映射关系中,自动生成错误消息
err = errors.New(CodeError1)
err = errors.NewSub(CodeError1, SubCodeError11)

// 自定义错误消息
err = errors.Newf(CodeError1, "c1"),
err = errors.Newf(CodeError1, "%s %d", arg1, arg2)
err = errors.NewSubLevel(CodeError1, "c1", SubCodeError11, "s1")

// 使用其他的error对象作为错误消息
err = errors.NewWithError(CodeError1, otherError)

// 全部参数支持
err = errors.NewFull(CodeError1, "c1", enableStack)
err = errors.NewSubLevelFull(CodeError1, msg, SubCodeError11, "s1", enableStack)

// 设置/获取附加数据信息
err.Attach["key"] = "value"
v := err.Attach["key"]

error对象判断/还原为errorBase对象:

func XXX(err error) {
    ok := errors.Is(err)
    ...
    errObj, ok := errors.Revert(err)
    if ok {
        ...
    } else {
        ...
    }
}
上一篇 下一篇

猜你喜欢

热点阅读