当前位置: 首页 > news >正文

gin全局错误处理器示例

gin全局错误处理器示例

中间件 middleware/error.go

package middlewareimport ("net/http""github.com/gin-gonic/gin"
)// ErrorHandler 全局错误处理中间件
func ErrorHandler() gin.HandlerFunc {return func(c *gin.Context) {// 1. 继续执行后续的 Handler 函数c.Next()// 2. 检查是否有错误发生if len(c.Errors) > 0 {err := c.Errors.Last().Err// 3. 根据错误类型,返回不同的 HTTP 状态码和 JSON 格式switch e := err.(type) {case *MyBusinessError: // 自定义业务错误c.JSON(http.StatusBadRequest, gin.H{"code":    e.Code,"message": e.Message,})default: // 其他未知错误c.JSON(http.StatusInternalServerError, gin.H{"code":    500,"message": "服务器内部错误",})}// 4. 终止后续处理c.Abort()}}
}// 自定义业务错误示例
type MyBusinessError struct {Code    intMessage string
}func (e *MyBusinessError) Error() string {return e.Message
}

使用示例

func main() {r := gin.Default()// 在路由之前注册全局错误处理中间件r.Use(middleware.ErrorHandler())// ... 其他路由r.GET("/test", func(c *gin.Context) {// 假设发生了一个业务错误err := &MyBusinessError{Code: 1002, Message: "参数无效"}// 使用 c.Error(err) 将错误交给中间件处理,Handler 内部无需关心响应细节c.Error(err)})
}
http://www.jsqmd.com/news/718270/

相关文章:

  • 深入CTP-API事件驱动模型:OnFrontConnected之后,你的交易程序该如何正确响应?
  • Qwen3-4B-Instruct-2507代码生成实战:十分钟创建Python爬虫脚本
  • pyro概率编程
  • 告别桌面混乱:3步用NoFences打造高效整洁的Windows工作空间
  • C++ 继承详解及实例代码
  • 别再手动跑代码了!用微生信在线工具5分钟搞定DESeq2差异分析(附完整流程与结果解读)
  • 基于图像识别技术的鸣潮自动化框架设计与实现
  • 原来发票合并PDF文件不用电脑折腾,手机也能轻松搞定
  • 终极AMD Ryzen处理器调试指南:掌握SMUDebugTool的5大核心技巧
  • Java的Javadoc文档生成与自定义标签在API文档中的扩展使用
  • Phi-4-mini-reasoning惊艳效果展示:多步数学推导生成简洁准确结论案例集
  • 如何高效使用DLSS Swapper:游戏性能优化的终极实战指南
  • DS4Windows终极指南:让PS手柄在PC上获得完美游戏体验的完整方案
  • WinArchiver Pro(解压缩软件) 6.2
  • Qwen3.5-2B入门指南:医疗报告OCR识别+结构化摘要生成全流程
  • 关于linux命令相关的沉淀
  • 抖音内容采集工程化实践:从Cookie管理到批量下载的技术挑战与解决方案
  • 注册表惹的祸?深度解析Windows 11软件打开方式失效的底层逻辑与一劳永逸的预防方案
  • 高危预警|Ivanti EPMM双洞连锁击穿:CVE-2026-1281/1340预认证RCE攻击链深度拆解与全域防御
  • 解密OBS多平台直播技术瓶颈:obs-multi-rtmp插件架构深度剖析
  • 【限时公开】微软内部未文档化的Copilot Next工作流配置白皮书(含7个生产环境YAML模板+4类典型故障响应SLA)
  • 5个关键步骤解决中文排版中的字体选择难题
  • 南北阁Nanbeige 4.1-3B实战:构建开源项目README与文档自动生成器
  • 三阶调优:TPFanCtrl2如何为ThinkPad打造静音高效的散热方案
  • vulkan架构
  • 从Hugging Face迁移模型至星图平台:Hypnos-i1-8B的快速部署实践
  • OpenClaw + 钉钉机器人对接全攻略
  • 如何快速解密QQ音乐文件:终极完整解决方案
  • [具身智能-505]:使用大模型并大模型交互的几种方式大全,如命令行、HTTP服务、Python库调用等
  • XXMI启动器终极指南:如何一站式管理所有热门二次元游戏模组