Gin框架错误处理笔记
1. 错误创建
// 创建错误的方法:fmt.Errorf()
简单错误:
err := fmt.Errorf("这是一个错误")
带变量的错误:
名字 := "张三"
err := fmt.Errorf("用户%s登录失败", 名字) // "用户张三登录失败"
2. Gin中的错误处理
r.GET("/api", func(c *gin.Context) {
// 1. 记录错误 - 写入日志,但不会直接显示给用户
c.Error(fmt.Errorf("系统内部错误"))
// 2. 返回给用户的响应 - 用户能看到的信息
c.JSON(http.StatusInternalServerError, gin.H{
"message": "服务器出错了",
})
})
3. 工作流程类比
c.Error()
: 相当于在内部记事本上记录问题(给开发人员看的)c.JSON()
: 相当于给用户的回复(给用户看的)
4. 常见用途
- 错误日志记录
- 调试问题
- 错误追踪
- 系统监控
5. 状态码
http.StatusOK // 200 - 成功
http.StatusBadRequest // 400 - 请求错误
http.StatusInternalServerError // 500 - 服务器内部错误
6. 完整示例
r.GET("/api", func(c *gin.Context) {
// 记录详细错误信息
c.Error(fmt.Errorf("数据库连接失败"))
c.Error(fmt.Errorf("查询超时"))
// 给用户友好提示
c.JSON(http.StatusInternalServerError, gin.H{
"message": "服务暂时不可用,请稍后再试",
})
})
记住:
fmt.Errorf()
用于创建错误信息c.Error()
用于内部记录错误c.JSON()
用于向用户返回响应