Class DefaultErrorWebExceptionHandler

  • All Implemented Interfaces:
    org.springframework.beans.factory.InitializingBean, org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler, org.springframework.web.server.WebExceptionHandler

    public class DefaultErrorWebExceptionHandler
    extends AbstractErrorWebExceptionHandler
    Basic global WebExceptionHandler, rendering ErrorAttributes.

    More specific errors can be handled either using Spring WebFlux abstractions (e.g. @ExceptionHandler with the annotation model) or by adding RouterFunction to the chain.

    This implementation will render error as HTML views if the client explicitly supports that media type. It attempts to resolve error views using well known conventions. Will search for templates and static assets under '/error' using the status code and the status series.

    For example, an HTTP 404 will search (in the specific order):

    • '/<templates>/error/404.<ext>'
    • '/<static>/error/404.html'
    • '/<templates>/error/4xx.<ext>'
    • '/<static>/error/4xx.html'
    • '/<templates>/error/error'
    • '/<static>/error/error.html'

    If none found, a default "Whitelabel Error" HTML view will be rendered.

    If the client doesn't support HTML, the error information will be rendered as a JSON payload.

    Since:
    2.0.0
    • Constructor Summary

      Constructors 
      ConstructorDescription
      DefaultErrorWebExceptionHandler​(org.springframework.boot.web.reactive.error.ErrorAttributes errorAttributes, ResourceProperties resourceProperties, ErrorProperties errorProperties, org.springframework.context.ApplicationContext applicationContext)
      Create a new DefaultErrorWebExceptionHandler instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      protected org.springframework.web.reactive.function.server.RequestPredicateacceptsTextHtml()
      Predicate that checks whether the current request explicitly support "text/html" media type.
      protected org.springframework.http.HttpStatusgetHttpStatus​(Map<String,​Object> errorAttributes)
      Get the HTTP error status information from the error map.
      protected org.springframework.web.reactive.function.server.RouterFunction<org.springframework.web.reactive.function.server.ServerResponse>getRoutingFunction​(org.springframework.boot.web.reactive.error.ErrorAttributes errorAttributes)
      Create a RouterFunction that can route and handle errors as JSON responses or HTML views.
      protected booleanisIncludeStackTrace​(org.springframework.web.reactive.function.server.ServerRequest request, org.springframework.http.MediaType produces)
      Determine if the stacktrace attribute should be included.
      protected voidlogError​(org.springframework.web.reactive.function.server.ServerRequest request, org.springframework.http.HttpStatus errorStatus)
      Log the original exception if handling it results in a Server Error or a Bad Request (Client Error with 400 status code) one.
      protected reactor.core.publisher.Mono<org.springframework.web.reactive.function.server.ServerResponse>renderErrorResponse​(org.springframework.web.reactive.function.server.ServerRequest request)
      Render the error information as a JSON payload.
      protected reactor.core.publisher.Mono<org.springframework.web.reactive.function.server.ServerResponse>renderErrorView​(org.springframework.web.reactive.function.server.ServerRequest request)
      Render the error information as an HTML view.
    • Constructor Detail

      • DefaultErrorWebExceptionHandler

        public DefaultErrorWebExceptionHandler​(org.springframework.boot.web.reactive.error.ErrorAttributes errorAttributes,
                                               ResourceProperties resourceProperties,
                                               ErrorProperties errorProperties,
                                               org.springframework.context.ApplicationContext applicationContext)
        Create a new DefaultErrorWebExceptionHandler instance.
        Parameters:
        errorAttributes - the error attributes
        resourceProperties - the resources configuration properties
        errorProperties - the error configuration properties
        applicationContext - the current application context
    • Method Detail

      • getRoutingFunction

        protected org.springframework.web.reactive.function.server.RouterFunction<org.springframework.web.reactive.function.server.ServerResponse> getRoutingFunction​(org.springframework.boot.web.reactive.error.ErrorAttributes errorAttributes)
        Description copied from class: AbstractErrorWebExceptionHandler
        Create a RouterFunction that can route and handle errors as JSON responses or HTML views.

        If the returned RouterFunction doesn't route to a HandlerFunction, the original exception is propagated in the pipeline and can be processed by other WebExceptionHandlers.

        Specified by:
        getRoutingFunction in class AbstractErrorWebExceptionHandler
        Parameters:
        errorAttributes - the ErrorAttributes instance to use to extract error information
        Returns:
        a RouterFunction that routes and handles errors
      • renderErrorView

        protected reactor.core.publisher.Mono<org.springframework.web.reactive.function.server.ServerResponse> renderErrorView​(org.springframework.web.reactive.function.server.ServerRequest request)
        Render the error information as an HTML view.
        Parameters:
        request - the current request
        Returns:
        a Publisher of the HTTP response
      • renderErrorResponse

        protected reactor.core.publisher.Mono<org.springframework.web.reactive.function.server.ServerResponse> renderErrorResponse​(org.springframework.web.reactive.function.server.ServerRequest request)
        Render the error information as a JSON payload.
        Parameters:
        request - the current request
        Returns:
        a Publisher of the HTTP response
      • isIncludeStackTrace

        protected boolean isIncludeStackTrace​(org.springframework.web.reactive.function.server.ServerRequest request,
                                              org.springframework.http.MediaType produces)
        Determine if the stacktrace attribute should be included.
        Parameters:
        request - the source request
        produces - the media type produced (or MediaType.ALL)
        Returns:
        if the stacktrace attribute should be included
      • getHttpStatus

        protected org.springframework.http.HttpStatus getHttpStatus​(Map<String,​Object> errorAttributes)
        Get the HTTP error status information from the error map.
        Parameters:
        errorAttributes - the current error information
        Returns:
        the error HTTP status
      • acceptsTextHtml

        protected org.springframework.web.reactive.function.server.RequestPredicate acceptsTextHtml()
        Predicate that checks whether the current request explicitly support "text/html" media type.

        The "match-all" media type is not considered here.

        Returns:
        the request predicate
      • logError

        protected void logError​(org.springframework.web.reactive.function.server.ServerRequest request,
                                org.springframework.http.HttpStatus errorStatus)
        Log the original exception if handling it results in a Server Error or a Bad Request (Client Error with 400 status code) one.
        Parameters:
        request - the source request
        errorStatus - the HTTP error status