示例#1
0
文件: recovery.go 项目: hxdyxd/pugo
func (rh *RecoveryHandler) Handle(ctx *tango.Context) {
	// capture render-controller error
	if render, ok := ctx.Action().(ITheme); ok {
		if err, ok := ctx.Result.(tango.AbortError); ok {
			render.RenderError(err.Code(), err)
			return
		}
		if err, ok := ctx.Result.(error); ok {
			ctx.WriteHeader(500)
			render.RenderError(ctx.Status(), err)
			return
		}
	}

	// capture abort error
	/*
		if err, ok := ctx.Result.(tango.AbortError); ok {
			ctx.WriteHeader(err.Code())
			theme := new(ThemeRender)
			theme.SetTheme(nil)
			theme.RenderError(err.Code(), err)
			return
		}*/

	// unexpected error
	tango.Errors()(ctx)
}
示例#2
0
文件: cache.go 项目: Felamande/cache
// Handle implement tango.Handle
func (c *Caches) Handle(ctx *tango.Context) {
	if action := ctx.Action(); ctx != nil {
		if s, ok := action.(Cacher); ok {
			s.SetCaches(c)
		}
	}

	ctx.Next()
}