errors 一个很不错的golang 异常处理包

pkg/errors 是一个用的比较多,同时也比较灵活的一个golang 异常处理包,我们基于此包,可以灵活的处理软件开发中的异常
以下是一个简单的学习

项目准备

  • go.mod
 
module github.com/rongfengliang/go-error
go 1.14
require github.com/pkg/errors v0.9.1
 
  • main.go
package main
import (
    "fmt"
    "github.com/pkg/errors"
)
func login(apikey string) error {
    return errors.New("demoapp")
}
type stackTracer interface {
    StackTrace() errors.StackTrace
}
func main() {
    err, ok := errors.Cause(login("deemoapp")).(stackTracer)
    if !ok {
        panic("oops, err does not implement stackTracer")
    }
    st := err.StackTrace()
    fmt.Printf("%+v", st[0:]) // top two frames
}
  • 说明
    我们只要修改以前的errors包为github.com/pkg/errors 就能使用好多方便分功能了,比如上边的代码就支持了请求栈的信息,同时可以方便
    我们的代码调试

运行效果

 
go run main.go

 

 

参考资料

https://github.com/pkg/errors

posted on   荣锋亮  阅读(1000)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-07-17 zeebe 0.20.0 发布生产可用了!
2019-07-17 手工部署yugabyte的几点说明
2019-07-17 yugabyte docker-compose 运行试用
2019-07-17 Why We Changed YugaByte DB Licensing to 100% Open Source
2018-07-17 使用jsonschema2pojo-maven-plugin 插件根据json文件生成代码
2017-07-17 REX-Ray 了解

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示