Просмотр исходного кода

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

jys 2 лет назад
Родитель
Сommit
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