فهرست منبع

对于仅提示错误增加必要的堆栈信息

jys 2 سال پیش
والد
کامیت
8bffda5f23
1فایلهای تغییر یافته به همراه23 افزوده شده و 19 حذف شده
  1. 23 19
      v2alpha/public.go

+ 23 - 19
v2alpha/public.go

@@ -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(),
+	}
+}