Kyrux
Voltar

Páginas de Erro

Comportamento por ambiente

Ambiente 404 / 4xx / 5xx Panic / Exceção
production Página de erro estilizada Página de erro 500
development Página de debug (com rotas registradas) Página de debug (com stack trace)

A página de debug é exibida automaticamente — não há rota dedicada. Qualquer erro ou panic em development a aciona diretamente.

Acionar erro em uma view

func PostView(ctx *router.Context) {
    post := models.Buscar(ctx.ParamInt("id"))
    if post == nil {
        ctx.Error(404)   // renderiza a página 404
        return
    }
    // ...
}

Personalizar página de erro

import "kyrux/core/errors"

// Em qualquer init() ou Register():
errors.Set(404, func(w http.ResponseWriter, r *http.Request) {
    // Renderize seu próprio template de 404
    // ou retorne JSON para APIs:
    w.Header().Set("Content-Type", "application/json")
    w.WriteHeader(404)
    json.NewEncoder(w).Encode(map[string]string{"error": "não encontrado"})
})

errors.Set(500, func(w http.ResponseWriter, r *http.Request) {
    render.For("meuapp").Render(/* ... */)
})

Handlers registrados via errors.Set() sempre têm prioridade, em qualquer ambiente.