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())
}
该博客探讨了如何在Go语言中创建一个自定义错误类型`BaseError`,包括内部错误、错误消息、堆栈跟踪和附加信息。通过`WrapError`函数,可以方便地包裹并扩展标准库中的错误。在`main`函数中展示了如何使用这个错误包装器生成并打印错误。

被折叠的 条评论
为什么被折叠?



