初级会员
  • 第 40023 位会员
  • jovian1994
  • 2019-07-08 16:17:38
  • Offline
  • 20 15

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 在这里发没啥用的,发简历到招聘网上去嘛
  • beego框架有个异常处理函数是recoverPanic.我们只需要改写一下这个函数,然后让beego.BConfig.RecoverFunc 指向我们的函数即可,代码如下 : ```go var myException = map[string]interface{}{ "status_code": 500, "error_code": 999, "msg": "sorry,we make mistake~", } func RecoverPanic(ctx *context.Context) { if err := recover(); err != nil { if err == beego.ErrAbort { return } if !beego.BConfig.RecoverPanic { panic(err) } var stack string logs.Critical("the request url is ", ctx.Input.URL()) logs.Critical("Handler crashed with error", err) for i := 1; ; i++ { _, file, line, ok := runtime.Caller(i) if !ok { break } logs.Critical(fmt.Sprintf("%s:%d", file, line)) stack = stack + fmt.Sprintln(fmt.Sprintf("%s:%d", file, line)) } _ = ctx.Output.JSON(myException,false,false) } } func init() { if beego.BConfig.RunMode == beego.PROD { beego.BConfig.RecoverFunc = RecoverPanic } } ``` 然后在main 包中匿名导入一下即可