Преглед на файлове

修复部分场景下错误码错误无堆栈信息的问题

jys преди 2 години
родител
ревизия
a899f17663
променени са 1 файла, в които са добавени 15 реда и са изтрити 6 реда
  1. 15 6
      v2alpha/public.go

+ 15 - 6
v2alpha/public.go

@@ -46,14 +46,23 @@ func WithCode[T codeType](err error, businessCode T, options ...Option) error {
 		option(ret)
 	}
 
-	if err == nil {
-		return &withStack{
-			error: ret,
-			stack: callers(),
-		}
+	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 ret
+	return &withStack{
+		error: ret,
+		stack: callers(),
+	}
 }
 
 // UmWrap 获取包装过的error