2 回答

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
您正在使用github.com/pkg/errors包,它做了一些巧妙的事情,比如添加堆棧跟蹤。
但這是一個(gè)外部包。標(biāo)準(zhǔn)庫中的錯(cuò)誤包不包括堆棧跟蹤。
您可以按如下方式使用它:
import "errors"
err := errors.New("my error message")
或者使用格式化,使用fmt包:
import "fmt"
err := fmt.Errorf("I have %d bugs", 10)

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
github.com/pkg/errors將始終存儲(chǔ)您的錯(cuò)誤堆棧跟蹤信息,但您可以自由選擇要顯示的格式:
err := errors.New("test")
fmt.Printf("%v", err) // show only message
fmt.Printf("%+v", err) // show message with full stack info
這個(gè)庫實(shí)現(xiàn)了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)
}
}
這是整個(gè)源代碼:https ://github.com/pkg/errors/blob/master/errors.go
- 2 回答
- 0 關(guān)注
- 116 瀏覽
添加回答
舉報(bào)