一架梯子,一头程序猿,仰望星空!
Golang GIN框架面试题 > 内容正文

Gin 框架中如何进行错误处理?如何自定义错误处理函数?


问题简答

Gin 框架中,可以使用中间件统一处理错误。Gin 框架内置了 Recovery 中间件,用于处理 panic 异常和未知异常,可以将 panic 异常转换为统一的json错误信息返回给前端,也可以返回一个统一的错误页面,此外,也可以通过自定义中间件的方式来自定义一个错误处理函数。

问题详解:

下面是通过自定义中间件的方式,定义一个统一处理请求错误的函数

package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()

    // 通过自定义中间件,定义自定义错误处理函数
    r.Use(func(c *gin.Context) {
        // 延迟处理
        defer func() {
            // 通过recover获取错误信息
            if err := recover(); err != nil {
                // 统一以json格式返回错误信息
                c.JSON(500, gin.H{
                    "status": 500,
                    "error":  fmt.Sprint(err),
                })
            }
        }()
        c.Next()
    })

    // 测试路由
    r.GET("/hello", func(c *gin.Context) {
        c.JSON(200, gin.H{"message": "Hello, tizi365.com!"})
    })

    r.Run(":8080")
}