コード例 #1
0
ファイル: init.go プロジェクト: hongjinqiu/finance
func BusinessPanicFilter(c *revel.Controller, fc []revel.Filter) {
	defer func() {
		if x := recover(); x != nil {
			if reflect.TypeOf(x).Name() == "BusinessError" {
				err := x.(BusinessError)
				c.Response.ContentType = "application/json; charset=utf-8"
				c.Result = c.RenderJson(map[string]interface{}{
					"success": false,
					"code":    err.Code,
					"message": err.Error(),
				})
			} else {
				if revel.Config.StringDefault("mode.dev", "true") != "true" {
					log.Print(x, "\n", string(debug.Stack()))
				}
				panic(x)
			}
		}
	}()
	fc[0](c, fc[1:])
}