public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver
HandlerExceptionResolver
interface, resolving standard Spring MVC exceptions and translating them to corresponding
HTTP status codes.
This exception resolver is enabled by default in the common Spring
DispatcherServlet
.
Exception | HTTP Status Code |
---|---|
HttpRequestMethodNotSupportedException |
405 (SC_METHOD_NOT_ALLOWED) |
HttpMediaTypeNotSupportedException |
415 (SC_UNSUPPORTED_MEDIA_TYPE) |
HttpMediaTypeNotAcceptableException |
406 (SC_NOT_ACCEPTABLE) |
MissingPathVariableException |
500 (SC_INTERNAL_SERVER_ERROR) |
MissingServletRequestParameterException |
400 (SC_BAD_REQUEST) |
ServletRequestBindingException |
400 (SC_BAD_REQUEST) |
ConversionNotSupportedException |
500 (SC_INTERNAL_SERVER_ERROR) |
TypeMismatchException |
400 (SC_BAD_REQUEST) |
HttpMessageNotReadableException |
400 (SC_BAD_REQUEST) |
HttpMessageNotWritableException |
500 (SC_INTERNAL_SERVER_ERROR) |
MethodArgumentNotValidException |
400 (SC_BAD_REQUEST) |
MissingServletRequestPartException |
400 (SC_BAD_REQUEST) |
BindException |
400 (SC_BAD_REQUEST) |
NoHandlerFoundException |
404 (SC_NOT_FOUND) |
AsyncRequestTimeoutException |
503 (SC_SERVICE_UNAVAILABLE) |
ResponseEntityExceptionHandler
Modifier and Type | Field and Description |
---|---|
static String |
PAGE_NOT_FOUND_LOG_CATEGORY
Log category to use when no mapped handler is found for a request.
|
protected static Log |
pageNotFoundLogger
Additional logger to use when no mapped handler is found for a request.
|
logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor and Description |
---|
DefaultHandlerExceptionResolver()
Sets the order to
Ordered.LOWEST_PRECEDENCE . |
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 handler execution,
returning a
ModelAndView that represents a specific error page if appropriate. |
protected ModelAndView |
handleAsyncRequestTimeoutException(AsyncRequestTimeoutException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where an async request timed out.
|
protected ModelAndView |
handleBindException(BindException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where an @ModelAttribute method
argument has binding or validation errors and is not followed by another
method argument of type
BindingResult . |
protected ModelAndView |
handleConversionNotSupported(ConversionNotSupportedException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case when a
WebDataBinder conversion cannot occur. |
protected ModelAndView |
handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where no message converters
were found that were acceptable for the client (expressed via the
Accept header. |
protected ModelAndView |
handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where no message converters
were found for the PUT or POSTed content.
|
protected ModelAndView |
handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where a message converter
cannot read from a HTTP request.
|
protected ModelAndView |
handleHttpMessageNotWritable(HttpMessageNotWritableException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where a
message converter
cannot write to a HTTP request.
|
protected ModelAndView |
handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where no request handler method was found for the particular HTTP request method.
|
protected ModelAndView |
handleMethodArgumentNotValidException(MethodArgumentNotValidException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where an argument annotated with
@Valid such as
an RequestBody or RequestPart argument fails validation. |
protected ModelAndView |
handleMissingPathVariable(MissingPathVariableException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case when a declared path variable does not match any extracted URI variable.
|
protected ModelAndView |
handleMissingServletRequestParameter(MissingServletRequestParameterException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case when a required parameter is missing.
|
protected ModelAndView |
handleMissingServletRequestPartException(MissingServletRequestPartException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where an @RequestPart, a
MultipartFile ,
or a javax.servlet.http.Part argument is required but is missing. |
protected ModelAndView |
handleNoHandlerFoundException(NoHandlerFoundException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case where no handler was found during the dispatch.
|
protected ModelAndView |
handleServletRequestBindingException(ServletRequestBindingException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case when an unrecoverable binding exception occurs - e.g.
|
protected ModelAndView |
handleTypeMismatch(TypeMismatchException ex,
HttpServletRequest request,
HttpServletResponse response,
Object handler)
Handle the case when a
WebDataBinder conversion error occurs. |
protected void |
sendServerError(Exception ex,
HttpServletRequest request,
HttpServletResponse response)
Invoked to send a server error.
|
buildLogMessage, getOrder, logException, prepareResponse, preventCaching, resolveException, setMappedHandlerClasses, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategory, shouldApplyTo
public static final String PAGE_NOT_FOUND_LOG_CATEGORY
pageNotFoundLogger
,
Constant Field Valuesprotected static final Log pageNotFoundLogger
PAGE_NOT_FOUND_LOG_CATEGORY
public DefaultHandlerExceptionResolver()
Ordered.LOWEST_PRECEDENCE
.@Nullable protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex)
AbstractHandlerExceptionResolver
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.
doResolveException
in class AbstractHandlerExceptionResolver
request
- current HTTP requestresponse
- current HTTP responsehandler
- 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 executionModelAndView
to forward to,
or null
for default processing in the resolution chainprotected ModelAndView handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation logs a warning, sends an HTTP 405 error, sets the "Allow" header,
and returns an empty ModelAndView
. Alternatively, a fallback view could be chosen,
or the HttpRequestMethodNotSupportedException could be rethrown as-is.
ex
- the HttpRequestMethodNotSupportedException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handler, or null
if none chosen
at the time of the exception (for example, if multipart resolution failed)IOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 415 error, sets the "Accept" header,
and returns an empty ModelAndView
. Alternatively, a fallback view could
be chosen, or the HttpMediaTypeNotSupportedException could be rethrown as-is.
ex
- the HttpMediaTypeNotSupportedException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
Accept
header.
The default implementation sends an HTTP 406 error and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the HttpMediaTypeNotAcceptableException
could be rethrown as-is.
ex
- the HttpMediaTypeNotAcceptableException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleMissingPathVariable(MissingPathVariableException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 500 error, and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the MissingPathVariableException
could be rethrown as-is.
ex
- the MissingPathVariableException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 400 error, and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the MissingServletRequestParameterException
could be rethrown as-is.
ex
- the MissingServletRequestParameterException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleServletRequestBindingException(ServletRequestBindingException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 400 error, and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the exception could be rethrown as-is.
ex
- the exception to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleConversionNotSupported(ConversionNotSupportedException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
WebDataBinder
conversion cannot occur.
The default implementation sends an HTTP 500 error, and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the ConversionNotSupportedException could be
rethrown as-is.
ex
- the ConversionNotSupportedException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleTypeMismatch(TypeMismatchException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
WebDataBinder
conversion error occurs.
The default implementation sends an HTTP 400 error, and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the TypeMismatchException could be rethrown as-is.
ex
- the TypeMismatchException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 400 error, and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the HttpMessageNotReadableException could be
rethrown as-is.
ex
- the HttpMessageNotReadableException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleHttpMessageNotWritable(HttpMessageNotWritableException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 500 error, and returns an empty ModelAndView
.
Alternatively, a fallback view could be chosen, or the HttpMessageNotWritableException could
be rethrown as-is.
ex
- the HttpMessageNotWritableException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleMethodArgumentNotValidException(MethodArgumentNotValidException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
@Valid
such as
an RequestBody
or RequestPart
argument fails validation.
By default, an HTTP 400 error is sent back to the client.
request
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleMissingServletRequestPartException(MissingServletRequestPartException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
MultipartFile
,
or a javax.servlet.http.Part
argument is required but is missing.
By default, an HTTP 400 error is sent back to the client.
request
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleBindException(BindException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
BindingResult
.
By default, an HTTP 400 error is sent back to the client.
request
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handlerIOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleNoHandlerFoundException(NoHandlerFoundException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 404 error and returns an empty
ModelAndView
. Alternatively, a fallback view could be chosen,
or the NoHandlerFoundException could be rethrown as-is.
ex
- the NoHandlerFoundException to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handler, or null
if none chosen
at the time of the exception (for example, if multipart resolution failed)IOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected ModelAndView handleAsyncRequestTimeoutException(AsyncRequestTimeoutException ex, HttpServletRequest request, HttpServletResponse response, @Nullable Object handler) throws IOException
The default implementation sends an HTTP 503 error.
ex
- the AsyncRequestTimeoutException
to be handledrequest
- current HTTP requestresponse
- current HTTP responsehandler
- the executed handler, or null
if none chosen
at the time of the exception (for example, if multipart resolution failed)IOException
- potentially thrown from HttpServletResponse.sendError(int, java.lang.String)
protected void sendServerError(Exception ex, HttpServletRequest request, HttpServletResponse response) throws IOException
IOException