我的項目包含一個自定義錯誤類型errNotFound,其中嵌入了一個錯誤?,F(xiàn)在我有一個pkg/errors包,它會生成一個打印調(diào)用堆棧的錯誤。但是當(dāng)我將此錯誤內(nèi)聯(lián)到 errNotFound 中時,不會打印調(diào)用堆棧。這是一個示例,我該如何更改它?簡單的:package mainimport ( "fmt" stderrors "errors" "github.com/pkg/errors")func findSomething() error { return errors.Errorf("something not found")}func main() { err := findSomething() // can print error stack exitf("Error1: %+v", err) fmt.Println() fmt.Println() // cannot print error stack err = ErrNotFound(err) exitf("Error2: %+v", err)}func exitf(format string, args ...interface{}) { fmt.Printf(format, args...) //os.Exit(1)}type errNotFound struct{ error }func ErrNotFound(err error) error { if err == nil || IsErrNotFound(err) { return err } return errNotFound{err}}func IsErrNotFound(err error) bool { return stderrors.As(err, &errNotFound{})}輸出:$ go run mainError1: something not foundmain.findSomething /home/lianxm/github.com/play_error/main.go:11main.main /home/lianxm/github.com/play_error/main.go:15runtime.main /usr/local/go/src/runtime/proc.go:255runtime.goexit /usr/local/go/src/runtime/asm_amd64.s:1581Error2: something not found我知道我可以得到原始錯誤err = errors.Unwrap(err)然后打印它,但這意味著我每次打印前都需要這樣做,這不是很優(yōu)雅的代碼,我真的不想這樣做......這是一個示例項目:https ://github.com/lianxmfor/play_error
golang pkg/errors 如何打印自定義包裝的錯誤?
慕的地8271018
2022-10-31 15:44:49