github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/errors/errors.go (about) 1 package errors 2 3 import "fmt" 4 5 import "runtime" 6 7 type MsgWarpError struct { 8 Err error 9 Msg string 10 } 11 12 func (err *MsgWarpError) Error() string { 13 return fmt.Sprintf("[%s] %v", err.Msg, err.Err) 14 } 15 16 //add more message to an error 17 func AddMessage(err error, msg string) error { 18 return &MsgWarpError{Err: err, Msg: msg} 19 } 20 21 type CallerWarpError struct { 22 Err error 23 File string 24 Line int 25 } 26 27 func (err *CallerWarpError) Error() string { 28 return fmt.Sprintf("[%s:%d] %v", err.File, err.Line, err.Err) 29 } 30 func AddCaller(err error) error { 31 errOut := &CallerWarpError{Err: err} 32 _, errOut.File, errOut.Line, _ = runtime.Caller(1) 33 return errOut 34 } 35 36 type SprintfWrapError struct { 37 args []interface{} 38 format string 39 } 40 41 func (err *SprintfWrapError) Error() string { 42 return fmt.Sprintf(err.format, err.args...) 43 } 44 45 //fmt.Errorf 46 func Sprintf(format string, args ...interface{}) error { 47 return &SprintfWrapError{format: format, args: args} 48 } 49 50 type stringWrapError string 51 52 func (err stringWrapError) Error() string { 53 return string(err) 54 } 55 56 // @deprecated 57 // errors.New 58 func New(s string) error { 59 return stringWrapError(s) 60 }