Skip to content

myml/ginerror

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ginerror

-- import "github.com/myml/ginerror"

Usage

func ErrorHandle

func ErrorHandle(logger *zap.Logger, customHandle func(c *gin.Context, err error) bool) gin.HandlerFunc

ErrorHandle 错误处理中间件 统一处理参数错误,数据库错误和自定义错误

生成错误的 uuid,便于前后端跟踪错误

使用 Error()包裹错误后,可打印错误堆栈

参数错误返回 code 400,并附带错误的字段和校验器 例子{"code": 400,"meesage": "validate error","fields": {"limit":"min"}}

数据库错误,当查询不到数据,返回 code 404

自定义错误,可通过 customHandle 自行处理,如非自定义错误,则返回 false

其他错误返回 500,并在日志打印 InternalServerError 日志

func Errorf

func Errorf(c *gin.Context, format string, err error) bool

Errorf 判断 err 是否为空 如果 err 为空返回 false, 如果 err 不为空返回 true,并执行记录堆栈,c.Error(fmt.Errorf(format, err)); c.Abort()。

可使用 errors.As(err,ErrorStack) 取出堆栈信息

类似 AbortWithError,但不设置 status,便于在错误处理中间件中自定义 http status code

func RegisterTagName

func RegisterTagName()

RegisterTagName 注册一个 tag name func 到 gin 的验证引擎 用于自动从 tag(优先级:uri,form,json)生成验证错误的字段名 使用 tag 做为错误字段名,有利于前端自动化提示错误字段 只支持新版本 gin 使用的 validator/v10

type ErrorStack

type ErrorStack struct {
}

ErrorStack 用于记录错误的堆栈信息

func (ErrorStack) Error

func (es ErrorStack) Error() string

func (*ErrorStack) Unwrap

func (es *ErrorStack) Unwrap() error