func run(c gaecontext.HTTPContext, f func(c gaecontext.HTTPContext)) { defer func() { if e := recover(); e != nil { msg := fmt.Sprintf("Failed: %v\n%s", e, utils.Stack()) c.Infof("%v", msg) c.Resp().WriteHeader(500) fmt.Fprintln(c.Resp(), msg) } }() c.Infof("Running %v", runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name()) f(c) c.Infof("Pass") }