package main
import (
“errors”
“fmt”
“runtime/debug”
)
type BaseError struct {
InnerError error
Message string
StackTrace string
Misc map[string]interface{}
}
func WrapError(err error, message string, messageArgs …interface{}) BaseError {
return BaseError{
InnerError: err,
Message: fmt.Sprintf(message, messageArgs),
StackTrace: string(debug.Stack()),
Misc: make(map[string]interface{}),
}
}
func (err *BaseError) Error() string {
return err.Message
}
func main() {
err := WrapError(errors.New(“测试error”), “测试message”, map[string]string{“name”: “sunqi”})
fmt.Println(err.Error())
}