美文网首页Golang 入门资料+笔记
一个Go语言的errors通用库

一个Go语言的errors通用库

作者: 爱翻身的咸鱼 | 来源:发表于2023-02-22 06:52 被阅读0次

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

  • 支持记录主业务的错误码和错误消息。
  • 支持记录子业务的错误码和错误消息。
  • 支持全局的错误码和错误消息的映射关系。
  • 支持使用NewXXX方法时生成调用栈信息。
  • 支持配置全局开启/禁用调用栈信息。
  • 兼容Go 1.2+版本。

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

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 {
        ...
    }
}

相关文章

  • 01初识Go

    语言介绍 go语言的全称是:go programming language。但是因为go 这个词太通用了,搜索引擎...

  • Golang查询SqlServer数据库

    Go语言中查询SqlServer数据库 一、Go语言中查询MsSQL数据库: // main.go package...

  • Grequests 库的使用

    Golang:Grequests 库的使用 Go 语言版本的 request Go 语言内置的请求库 net/ht...

  • Go操作MySQL

    Go语言操作MySQL MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。 Go操作...

  • Go语言简介

    Go语言简介 Go语言设计的初衷 针对其他语言的痛点进行设计并加入并发编程为大数据,微服务,并发而生的通用编程语言...

  • Go语言环境和GoLand-IDE开发环境安装

    Go 语言中文网Go 语言标准库文档 Go 语言环境安装 根据系统下载 Go 安装包Go 安装包下载地址:http...

  • go-xorm封装公共CURD类

    go-xorm封装公共CURD类 $ 前言 go-xorm是一个简单而强大的Go语言ORM库. 通过它可以使数据库...

  • Golang语言社区-- Go语言标准库中文版正式上线

    Golang语言社区-- Go语言标准库中文版正式上线 因为最近比较闲,看了Go语言标准库的中文文档,发现版本还是...

  • 笨办法学golang(三)

    这是Go语言学习笔记第三篇。 Go语言学习笔记参考书籍「Go语言圣经」以及Go官方标准库 Go语言基本类型主要有布...

  • 开源学习go库的项目Go-Library-Demo

    大家好,在我长达3个月的怼go语言,几乎怼光了go库中百分之80以上的库,这是全网唯一的较深较全的go语言和go库...

网友评论

    本文标题:一个Go语言的errors通用库

    本文链接:https://www.haomeiwen.com/subject/kpzokdtx.html