org.springframework.web.servlet.mvc.annotation

## Class ResponseStatusExceptionResolver

- java.lang.Object
- - org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver
  - - org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver

- All Implemented Interfaces:
    Aware, MessageSourceAware, Ordered, HandlerExceptionResolver

      public class ResponseStatusExceptionResolver
      extends AbstractHandlerExceptionResolver
      implements MessageSourceAware

  Implementation of the `HandlerExceptionResolver` interface that uses the `@ResponseStatus` annotation to map exceptions to HTTP status codes.

  This exception resolver is enabled by default in the `DispatcherServlet`.

  Since:
    3.0
  Author:
    Arjen Poutsma, Rossen Stoyanchev

- - ### Field Summary

    - ### Fields inherited from class org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver

      `logger`

    - ### Fields inherited from interface org.springframework.core.Ordered

      `HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ResponseStatusExceptionResolver()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected ModelAndView` | `doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)` Actually resolve the given exception that got thrown during on handler execution, returning a ModelAndView that represents a specific error page if appropriate.
    `protected ModelAndView` | `resolveResponseStatus(ResponseStatus responseStatus, HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)` Template method that handles `@ResponseStatus` annotation.
    `void` | `setMessageSource(MessageSource messageSource)` Set the MessageSource that this object runs in.

    - ### Methods inherited from class org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver

      `buildLogMessage, getOrder, logException, prepareResponse, preventCaching, resolveException, setMappedHandlerClasses, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategory, shouldApplyTo`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ResponseStatusExceptionResolver

          public ResponseStatusExceptionResolver()

  - ### Method Detail

    - #### setMessageSource

          public void setMessageSource(MessageSource messageSource)

      Description copied from interface: `MessageSourceAware`
      Set the MessageSource that this object runs in.

      Invoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method. Invoked before ApplicationContextAware's setApplicationContext.

      Specified by:
        `setMessageSource` in interface `MessageSourceAware`
      Parameters:
        `messageSource` - message sourceto be used by this object

    - #### doResolveException

          protected ModelAndView doResolveException(HttpServletRequest request,
                                        HttpServletResponse response,
                                        Object handler,
                                        Exception ex)

      Description copied from class: `AbstractHandlerExceptionResolver`
      Actually resolve the given exception that got thrown during on handler execution, returning a ModelAndView that represents a specific error page if appropriate.

      May be overridden in subclasses, in order to apply specific exception checks. Note that this template method will be invoked after checking whether this resolved applies ("mappedHandlers" etc), so an implementation may simply proceed with its actual exception handling.

      Specified by:
        `doResolveException` in class `AbstractHandlerExceptionResolver`
      Parameters:
        `request` - current HTTP request
        `response` - current HTTP response
        `handler` - the executed handler, or `null` if none chosen at the time of the exception (for example, if multipart resolution failed)
        `ex` - the exception that got thrown during handler execution
      Returns:
        a corresponding ModelAndView to forward to, or `null` for default processing

    - #### resolveResponseStatus

          protected ModelAndView resolveResponseStatus(ResponseStatus responseStatus,
                                           HttpServletRequest request,
                                           HttpServletResponse response,
                                           Object handler,
                                           Exception ex)
                                                throws Exception

      Template method that handles `@ResponseStatus` annotation.

      Default implementation send a response error using `HttpServletResponse.sendError(int)`, or `HttpServletResponse.sendError(int, String)` if the annotation has a reason. Returns an empty ModelAndView.

      Parameters:
        `responseStatus` - the annotation
        `request` - current HTTP request
        `response` - current HTTP response
        `handler` - the executed handler, or `null` if none chosen at the time of the exception (for example, if multipart resolution failed)
        `ex` - the exception that got thrown during handler execution
      Returns:
        a corresponding ModelAndView to forward to, or `null` for default processing
      Throws:
        `Exception`