在的web服务开发中,我们会遇到出现Error的场合,我们需要将这些error的信息返回给客户端。特别是api, 这些错误描述应该以JSON结构体的形式返回,其中要包含业务错误码和具体的原因。我们可以每次手动处理这些错误,但是为了减少重复并统一处理风格,我们需要采取手段进行统一的错误处理。
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"log"
"runtime/debug"
)
func recover400(c *gin.Context) {
c. JSON (200, gin.H{
"status": 404,
"message": "404 Not Found" + c. Request .Method + " " + c.FullPath(),
})
}
func recover500(c *gin.Context) {
defer func() {
if r := recover(); r != nil {
log.Printf("panic: %v\n", r)
debug.PrintStack()
c.JSON(200, gin.H{
"code": 500,
"message": "服务器内部错误",
})
}
}()
c.Next()
}
func main() {
router := gin.Default()
router.Use(recover500)
//处理404 请求
router.NoRoute(recover400)
router.Run(":9999")
}