|
|
@@ -27,7 +27,7 @@ func Wrap(err error, format string, args ...any) error {
|
|
|
msg = fmt.Sprintf(format, args...)
|
|
|
}
|
|
|
return &withMessage{
|
|
|
- cause: err,
|
|
|
+ cause: wrapStack(err),
|
|
|
msg: msg,
|
|
|
}
|
|
|
}
|
|
|
@@ -37,7 +37,7 @@ func Wrap(err error, format string, args ...any) error {
|
|
|
func WithCode[T codeType](err error, businessCode T, options ...Option) error {
|
|
|
code := getCode(int(businessCode))
|
|
|
ret := &withCode{
|
|
|
- cause: err,
|
|
|
+ cause: wrapStack(err),
|
|
|
Msg: code.Message,
|
|
|
HttpCode: code.HttpCode,
|
|
|
BusinessCode: code.BusinessCode,
|
|
|
@@ -46,23 +46,7 @@ func WithCode[T codeType](err error, businessCode T, options ...Option) error {
|
|
|
option(ret)
|
|
|
}
|
|
|
|
|
|
- if _, ok := err.(*fundamental); ok {
|
|
|
- return ret
|
|
|
- }
|
|
|
- if _, ok := err.(*withCode); ok {
|
|
|
- return ret
|
|
|
- }
|
|
|
- if _, ok := err.(*withMessage); ok {
|
|
|
- return ret
|
|
|
- }
|
|
|
- if _, ok := err.(*withStack); ok {
|
|
|
- return ret
|
|
|
- }
|
|
|
-
|
|
|
- return &withStack{
|
|
|
- error: ret,
|
|
|
- stack: callers(),
|
|
|
- }
|
|
|
+ return ret
|
|
|
}
|
|
|
|
|
|
// UmWrap 获取包装过的error
|
|
|
@@ -145,3 +129,23 @@ func outerMsg(err error) string {
|
|
|
}
|
|
|
return err.Error()
|
|
|
}
|
|
|
+
|
|
|
+func wrapStack(err error) error {
|
|
|
+ if _, ok := err.(*fundamental); ok {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if _, ok := err.(*withCode); ok {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if _, ok := err.(*withMessage); ok {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if _, ok := err.(*withStack); ok {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+
|
|
|
+ return &withStack{
|
|
|
+ error: err,
|
|
|
+ stack: callers(),
|
|
|
+ }
|
|
|
+}
|