This is currently possible, but could be better:
RouterFunctions.route()
.GET("/path", request -> {
throw new IllegalArgumentException("...");
})
.onError(IllegalArgumentException.class, (ex, serverRequest) -> {
ErrorResponse errorResponse = ErrorResponse.createFor(
(Exception) ex, HttpStatus.BAD_REQUEST, null, "Invalid input", null, null);
return ServerResponse.status(errorResponse.getStatusCode())
.body(errorResponse.getBody());
})
.build()
We could add a ServerResponse#from(ErrorResponse)
shortcut, and also provide a builder for ErrorResponse
.