代码拉取完成,页面将自动刷新
同步操作将从 有贝无患/go-xxljob-executor 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package server
import (
"bytes"
"fmt"
"gitee.com/YaPi98/go-xxljob-executor/biz/model"
"github.com/gin-gonic/gin"
"net/http"
"runtime"
"strings"
)
func Recovery(c *gin.Context) {
defer func() {
if r := recover(); r != nil {
//打印错误堆栈信息
//logger.GetLogger().Errorf("panic: %v\n", r)
//s := printStackTrace(r)
//Result.Fail不是本例的重点,因此用下面代码代替
c.JSON(http.StatusOK, model.ReturnT{
Code: model.FAIL_CODE,
Msg: fmt.Sprintf("panic: %v\n", r),
})
//终止后续接口调用,不加的话recover到异常后,还会继续执行接口里后续代码
c.Abort()
}
}()
//加载完 defer recover,继续后续接口调用
c.Next()
}
// 打印堆栈信息
func printStackTrace(err interface{}) string {
buf := new(bytes.Buffer)
fmt.Fprintf(buf, "%v\n", err)
for i := 1; ; i++ {
pc, file, line, ok := runtime.Caller(i)
if !ok {
break
}
if strings.Contains(file, "/go/") || strings.Contains(file, "/middleware/recovery.go") || strings.Contains(file, "/middleware/intercepter.go") {
continue
}
fmt.Fprintf(buf, "%s:%d (0x%x)\n", file, line, pc)
}
return buf.String()
}
func Deal404(c *gin.Context) {
c.JSON(http.StatusOK, model.ReturnT{
Code: model.FAIL_CODE,
Msg: fmt.Sprintf("path %s dose not exist!", c.FullPath()),
})
c.Abort()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。