Переглянути джерело

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

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