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. 常见用途

  1. 错误日志记录
  2. 调试问题
  3. 错误追踪
  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() 用于向用户返回响应
每日更新-免费小火箭账号
不要错过任何机会,探索最新的应用和游戏,就在我们的平台。
立即访问
最后修改:2024 年 12 月 27 日
如果觉得我的文章对你有用,请随意赞赏