当我们需要在GO项目中设计错误时,我们必须首先知道几种常见的GO错误方法。标准库是一种很好的学习方式。此外,还需要掌握GO1.13的错误功能。
这里的判断分为可变判断和其他类型。
它适用于适合PKG的多个误差变量或类型。ERR可能仅是这些变量之一。
案例:os.isexist(err)
它适用于用于构建pkg级别的错误接口类型,同时结合结构中的错误变量以表示潜在的错误
案例:net.Error界面
我们知道Linux具有大量的错误代码,代表各种类型的错误,对于许多系统非常有用。如何与此Errono模式兼容?
案例:sysacall.errno
在某些情况下,错误具有链关系。当然,我们可以实现链错误类型,但是GO1.13引入语言 - 级别的支持。它非常简单,只要3个重要用法:
以上代码取决于错误。unwrap函数。该功能通过反射反射来分析链误差的先前误差。
从代码可以看出,当使用错误时,我们有两个错误变量,可以确定前者是否链接后者。
AS用于具有错误变量和错误类型。要确定链是否包含此错误类型。如果是的,我们将在目标中保存值,这等同于丢弃某些链条信息,回到基础知识。这里是2个注意点:
有时我们会看到github.com/pkg/error的包装。它实际上是使用链错误引用的软件包的旧版本。它的常用方法是包裹,Causeou可以猜测项目不使用新错误功能。
原始:https://juejin.cn/post/7102659941533483045