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
`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`