package main import ( "fmt" "log" "github.com/pkg/errors" ) // type ownError struct{} // func (e *ownError) Error() string { // return "is ownError" // } // func Exec() error { // return new(ownError) // } func a() error { err := b() err = errors.New("aaa") log.Printf("original error:%T %v\n", errors.Cause(err), errors.Cause(err)) return err } func b() error { err := errors.New("bbb") log.Printf("original error:%T %v\n", errors.Cause(err), errors.Cause(err)) return errors.Wrap(err, "fun3 call func2 error") } // eas 测试连接 func main() { log.Printf("original error:%+v ", a()) fmt.Println("aaaaaaaa") }