常见的 juju 错误以及标注错误的函数。 基于 juju/errgo
import "GitHub.com/juju/errors" juju/errors 提供了一种轻松的方法来标注错误,而不会丢失原始的错误上下文。导出的 New 和 Errorf 函数分别用于替换 errors.New 和 fmt.Errorf 函数。相同的底层错误仍然存在,但该包还记录了错误创建的位置。此库的主要用例是在函数返回错误时添加额外的上下文。
其中一个例子是记录跟踪调用的文件和行号,或者:
if err := SomeFunc(); err != nil {
return errors.Annotate(err, "more context")
}还会为错误添加注释。
err := errors.Errorf("original") err = errors.Annotatef(err, "context") err = errors.Annotatef(err, "more context") err.Error() -> "more context: context: original" 显然,如果无法将文件、行号和函数记录下来,则记录这些信息并不是很有用。
第一个错误是由外部系统生成的,因此没有关联的位置。第二行、第四行和最后一行是通过 Trace 调用生成的,另外两行是通过 Annotate 生成的。有时候,在响应错误时,您可能希望返回更具体的信息。
暂无开放 Issues,或尚未同步最近议题。