2 回答
TA贡献1785条经验 获得超4个赞
您正在使用github.com/pkg/errors包,它做了一些巧妙的事情,比如添加堆栈跟踪。
但这是一个外部包。标准库中的错误包不包括堆栈跟踪。
您可以按如下方式使用它:
import "errors"
err := errors.New("my error message")
或者使用格式化,使用fmt包:
import "fmt"
err := fmt.Errorf("I have %d bugs", 10)
TA贡献1793条经验 获得超6个赞
github.com/pkg/errors将始终存储您的错误堆栈跟踪信息,但您可以自由选择要显示的格式:
err := errors.New("test")
fmt.Printf("%v", err) // show only message
fmt.Printf("%+v", err) // show message with full stack info
这个库实现了fmt.Formatter接口以改变输出行为:
func (f *fundamental) Format(s fmt.State, verb rune) {
switch verb {
case 'v':
if s.Flag('+') {
io.WriteString(s, f.msg)
f.stack.Format(s, verb)
return
}
fallthrough
case 's':
io.WriteString(s, f.msg)
case 'q':
fmt.Fprintf(s, "%q", f.msg)
}
}
这是整个源代码:https ://github.com/pkg/errors/blob/master/errors.go
- 2 回答
- 0 关注
- 92 浏览
添加回答
举报