Error Handler
User-defined error pages
When web application encounters some unexpected situations, it may send 404 response to the client.
You may want to use user-defined 404 pages, then you can use resp
to return 404 response.
Prologue
also provides an error404
helper function to create a 404 response.
Or use errorPage
to create a more descriptive error page.
Default error handler
Users can also set the default error handler. When ctx.response.body
is empty, web application will use the default error handler.
The basic example with respDefault
which is equal to resp errorPage("Something is wrong"), Http404
.
Prologue
has registered two error handlers before application starts, namely default404Handler
for Http404
and default500Handler
for Http500
. You can change them using registerErrorHandler
.
proc go404*(ctx: Context) {.async.} =
resp "Something wrong!", Http404
proc go20x*(ctx: Context) {.async.} =
resp "Ok!", Http200
proc go30x*(ctx: Context) {.async.} =
resp "EveryThing else?", Http301
app.registerErrorHandler(Http404, go404)
app.registerErrorHandler({Http200 .. Http204}, go20x)
app.registerErrorHandler(@[Http301, Http304, Http307], go30x)
If you don't want to use the default Error handler, you could clear the whole error handler table.
HTTP 500 handler
Http 500
indicates the internal error of the framework. In debug mode(settings.debug = true
), the framework will send the exception msgs to the web browser if the length of error msgs is greater than zero.
Otherwise, the framework will use the default error handled which has been registered before the application starts. Users could cover this handler by using their own error handler.