github.com/aquayi/gokit@v0.0.0-20170805152833-88827a405d9b/err.go (about) 1 // err.go 2 // Reference: https://github.com/reusee/codes/tree/master/err 3 // 4 //请牢记一点 5 //error是**接口** 6 //*Err实现Error()后,是满足error接口的类型 7 // 8 9 package GoKit 10 11 import "fmt" 12 13 // Error 是自定义的错误类型 14 type Error struct { 15 Info string 16 Prev error 17 } 18 19 // Err 对Error添加新的信息,以便于追踪错误。 20 func Err(err error, msgAndArgs ...interface{}) *Error { 21 return &Error{ 22 Info: Message(msgAndArgs...), 23 Prev: err, 24 } 25 } 26 27 // Error() 帮助 Error struct 实现 error 接口 28 func (e *Error) Error() string { 29 if e.Prev == nil { 30 // 只有当第一个 error 是 *Error时,才用的到这个 31 return fmt.Sprintf("%s", e.Info) 32 } 33 return fmt.Sprintf("%s ==> %s", e.Info, e.Prev) 34 }