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:]) }