返回介绍

代码

调试技术

数据库

前端

GOLANG

JAVA

网络

心理学

PYTHON

创业

UNIX/LINUX

分布式

系统设计

搜索引擎

开发工具

思维

源码

网站架构微服务

软件工程/项目管理

运维

金融理财

写作

互联网

区块链

技术演讲网课

职场

《go业务基础库之Error&Context》

发布于 2023-09-17 00:26:21 字数 1445 浏览 0 评论 0 收藏 0

go业务基础库之Error&Context

Error-Background

  • 错误检查和打印
    • 分层开发导致处处打印
    • 难以获取堆栈关联
    • 根因丢失
  • 业务错误处理
    • API 中逻辑标识处理
    • API 中错误消息展示
    • API 中业务的 Hint 数据

Error-Handle Error

  • 追加上下文
    • WithStack/Warp 来保存堆栈
    • WithMessage 来定义消息
// github.com/pkg/errors
_, err := ioutil.ReadAll(r)
if err != nil {
  return errors.Wrap(err, "read failed")
}
  • 根因追踪
    • Cause 获取根因,用于 Sentinel errors 逻辑处理

Error-Best practice

  • 集中处理错误,errorgroup
    • 容易用错返回的context
    • 扇出没有控制
    • 业务代码容易 panic

Error-Handle Error

Context-Background

  • 超时 & 取消
    • 业务库从无到有
    • 可用性:超时
    • 可用性:取消
  • 元数据传递
    • 同进程:同步生命周期传递
    • 同进程:异步生命周期传递
    • 跨进程:网络传递

Context-Context With API

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文