Exception handling for Wai
and Warp
.
By default Warp
not handles exceptions well. It just log them to
console. This package - an attempt to solve the problem.
The only drawback stems from the basic advantages of Haskell - laziness.
All errors within Wai
ResponseBuilder
will not be caught. Thus, the
following code will not work:
... return $ responseLBS undefined ...
To ensure catch all errors, you need to consume all data before feeding the builder.
- protect :: [ResponseHandler] -> Middleware
- data ResponseHandler = forall e . Exception e => ResponseHandler (e -> Application)
- mkHandler :: forall e. Exception e => (e -> Application) -> ResponseHandler
- defHandler :: ResponseHandler
Middleware
:: [ResponseHandler] | Wrapped handlers. See |
-> Middleware |
Protect Middleware
chain from exceptions. This acts like
catches
, but uses own handler type for simplicity.
Handlers
data ResponseHandler Source
Handler wrapper. For polymorphic exceptions.
forall e . Exception e => ResponseHandler (e -> Application) |
:: forall e . Exception e | |
=> (e -> Application) | |
-> ResponseHandler |
Helper for make RequestHandler
protect [mkHandler myHandler] $ ...
defHandler :: ResponseHandlerSource
Default handler.