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  }