一个面向 Go 的全面的错误处理库
不难发现,这往往是不够的。当开发人员能看到的一切都是日志中的一行,看起来像下面这几行时,解决问题就没有什么乐趣了:
一个 errorx 库采用以下考虑因素来创建一个工具集,以帮助解决此问题: * 对于一个错误,不需要额外的处理,以便获得所有必要的调试信息;相反,可能会构成特殊情况 * 必须能够区分不同类型的错误,因为它们可能意味着或要求用户代码采取不同的处理方式 * 错误必须可组合,而像 if err == io.EOF 这样的模式破坏了这一目的,因此应当避免使用它们 * 在途径中可以添加一些上下文信息,并且必须有方法来实现这一点,而不改变错误的语义 * 创建错误,为其添加一些上下文信息,并检查错误是否存在时,必须很容易 * 一个需要调用者特殊处理的错误 确实 是公共 API 的一部分;过多的这种类型是代码异味
因此,库的目标是为常规的错误处理提供简洁、表达力强的语法,并阻止那些带来更多伤害的使用模式。与正常代码路径相比,错误相关的负面代码路径通常测试不够充分,而且可能会比其正面对应更加混淆读者。因此,错误处理通常需要更多的测试。
暂无开放 Issues,或尚未同步最近议题。