Exception Handling
Exceptions thrown during route execution bubble up through the route structure to the next enclosing handleExceptions directive or the top of your route structure.
Similarly to the way that Rejections are handled the handleExceptions directive delegates the actual job
of converting an exception to its argument, an ExceptionHandler
.
An ExceptionHandler
is a partial function, so it can choose which exceptions it would like to handle and
which not. Unhandled exceptions will simply continue to bubble up in the route structure.
At the root of the route tree any still unhandled exception will be dealt with by the top-level handler which always
handles all exceptions.
Route.seal
internally wraps its argument route with the handleExceptions directive in order to "catch" and
handle any exception.
So, if you'd like to customize the way certain exceptions are handled you need to write a custom ExceptionHandler
.
Once you have defined your custom ExceptionHandler
you can supply it as argument to the handleExceptions directive.
That will apply your handler to the inner route given to that directive.
Here is an example for wiring up a custom handler via handleExceptions:
TODO
Contents