handleExceptions
§Signature
§Description
Catches exceptions thrown by the inner route and handles them using the specified ExceptionHandler
.
Using this directive is an alternative to using a global implicitly defined ExceptionHandler
that
applies to the complete route.
See Exception Handling for general information about options for handling exceptions.
§Example
- val divByZeroHandler = ExceptionHandler {
- case _: ArithmeticException => complete((StatusCodes.BadRequest, "You've got your arithmetic wrong, fool!"))
- }
- val route =
- path("divide" / IntNumber / IntNumber) { (a, b) =>
- handleExceptions(divByZeroHandler) {
- complete(s"The result is ${a / b}")
- }
- }
-
- // tests:
- Get("/divide/10/5") ~> route ~> check {
- responseAs[String] shouldEqual "The result is 2"
- }
- Get("/divide/10/0") ~> route ~> check {
- status shouldEqual StatusCodes.BadRequest
- responseAs[String] shouldEqual "You've got your arithmetic wrong, fool!"
- }
Contents