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 關注
- 117 瀏覽
添加回答
舉報