This commit is contained in:
oneao committed 2025-11-07 10:10:10 +08:00
1 parent be8eaae7c5
commit d6dd5b032d
11 files changed
+202 -112

No files matched your search

@@ -1,13 +1,11 @@
package router
import (
"base-go-v2/internal/errs"
"base-go-v2/internal/utils/mapx"
"base-go-v2/internal/utils/validate"
"encoding/json"
"sync"
"github.com/valyala/fasthttp"
"sync"
)
// BodyCache 缓存 fasthttp 请求体
@@ -167,23 +165,23 @@ func (c *Context) AddError(err error) error {
}
if _, exists := c.keys["errors"]; !exists {
c.keys["errors"] = []*errs.StackError{}
c.keys["errors"] = []*StackError{}
}
// 统一生成堆栈
se := errs.WrapWithStack(err)
c.keys["errors"] = append(c.keys["errors"].([]*errs.StackError), se)
se := WrapWithStack(err)
c.keys["errors"] = append(c.keys["errors"].([]*StackError), se)
return err
}
// Errors 返回 []*utils.StackError
func (c *Context) Errors() []*errs.StackError {
func (c *Context) Errors() []*StackError {
if c.keys == nil {
return nil
}
if err, exists := c.keys["errors"]; exists {
return err.([]*errs.StackError)
if errs, exists := c.keys["errors"]; exists {
return errs.([]*StackError)
}
return nil
}
@@ -0,0 +1,42 @@
package router
import (
"errors"
"runtime/debug"
)
// StackError 保存原始错误和堆栈
type StackError struct {
err error
stack string
}
// 实现 error 接口
func (s *StackError) Error() string {
if s.err == nil {
return ""
}
return s.err.Error()
}
// StackTrace 返回堆栈信息
func (s *StackError) StackTrace() string {
return s.stack
}
// WrapWithStack 给错误附加堆栈,如果已经是 StackError 则直接返回
func WrapWithStack(err error) *StackError {
if err == nil {
return nil
}
var se *StackError
if errors.As(err, &se) {
return se
}
return &StackError{
err: err,
stack: string(debug.Stack()),
}
}