public abstract class ResponseEntityExceptionHandler extends Object
@ControllerAdvice
classes
that wish to provide centralized exception handling across all
@RequestMapping
methods through @ExceptionHandler
methods.
This base class provides an @ExceptionHandler
for handling standard
Spring MVC exceptions that returns a ResponseEntity
to be written with
message converters
. This is in contrast to
DefaultHandlerExceptionResolver
which returns a ModelAndView
instead.
If there is no need to write error content to the response body, or if using
view resolution, e.g. ContentNegotiatingViewResolver
, then use
DefaultHandlerExceptionResolver
instead.
Note that in order for an @ControllerAdvice
sub-class to be
detected, ExceptionHandlerExceptionResolver
must be configured.
DefaultHandlerExceptionResolver
Modifier and Type | Field and Description |
---|---|
protected Log |
logger |
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.
|
Constructor and Description |
---|
ResponseEntityExceptionHandler() |
Modifier and Type | Method and Description |
---|---|
protected ResponseEntity<Object> |
handleBindException(BindException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for BindException.
|
protected ResponseEntity<Object> |
handleConversionNotSupported(ConversionNotSupportedException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for ConversionNotSupportedException.
|
ResponseEntity<Object> |
handleException(Exception ex,
WebRequest request)
Provides handling for standard Spring MVC exceptions.
|
protected ResponseEntity<Object> |
handleExceptionInternal(Exception ex,
Object body,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
A single place to customize the response body of all Exception types.
|
protected ResponseEntity<Object> |
handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for HttpMediaTypeNotAcceptableException.
|
protected ResponseEntity<Object> |
handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for HttpMediaTypeNotSupportedException.
|
protected ResponseEntity<Object> |
handleHttpMessageNotReadable(HttpMessageNotReadableException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for HttpMessageNotReadableException.
|
protected ResponseEntity<Object> |
handleHttpMessageNotWritable(HttpMessageNotWritableException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for HttpMessageNotWritableException.
|
protected ResponseEntity<Object> |
handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for HttpRequestMethodNotSupportedException.
|
protected ResponseEntity<Object> |
handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for MethodArgumentNotValidException.
|
protected ResponseEntity<Object> |
handleMissingServletRequestParameter(MissingServletRequestParameterException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for MissingServletRequestParameterException.
|
protected ResponseEntity<Object> |
handleMissingServletRequestPart(MissingServletRequestPartException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for MissingServletRequestPartException.
|
protected ResponseEntity<Object> |
handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for NoSuchRequestHandlingMethodException.
|
protected ResponseEntity<Object> |
handleServletRequestBindingException(ServletRequestBindingException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for ServletRequestBindingException.
|
protected ResponseEntity<Object> |
handleTypeMismatch(TypeMismatchException ex,
HttpHeaders headers,
HttpStatus status,
WebRequest request)
Customize the response for TypeMismatchException.
|
protected final Log logger
public static final String PAGE_NOT_FOUND_LOG_CATEGORY
pageNotFoundLogger
,
Constant Field Valuesprotected static final Log pageNotFoundLogger
PAGE_NOT_FOUND_LOG_CATEGORY
@ExceptionHandler(value={NoSuchRequestHandlingMethodException.class,HttpRequestMethodNotSupportedException.class,HttpMediaTypeNotSupportedException.class,HttpMediaTypeNotAcceptableException.class,MissingServletRequestParameterException.class,ServletRequestBindingException.class,ConversionNotSupportedException.class,TypeMismatchException.class,HttpMessageNotReadableException.class,HttpMessageNotWritableException.class,MethodArgumentNotValidException.class,MissingServletRequestPartException.class,BindException.class}) public final ResponseEntity<Object> handleException(Exception ex, WebRequest request)
ex
- the target exceptionrequest
- the current requestprotected ResponseEntity<Object> handleExceptionInternal(Exception ex, Object body, HttpHeaders headers, HttpStatus status, WebRequest request)
null
by default.ex
- the exceptionbody
- the body to use for the responseheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestprotected ResponseEntity<Object> handleNoSuchRequestHandlingMethod(NoSuchRequestHandlingMethodException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleServletRequestBindingException(ServletRequestBindingException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleConversionNotSupported(ConversionNotSupportedException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleTypeMismatch(TypeMismatchException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleHttpMessageNotWritable(HttpMessageNotWritableException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleMissingServletRequestPart(MissingServletRequestPartException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instanceprotected ResponseEntity<Object> handleBindException(BindException ex, HttpHeaders headers, HttpStatus status, WebRequest request)
handleExceptionInternal(Exception, Object, HttpHeaders, HttpStatus, WebRequest)
.ex
- the exceptionheaders
- the headers to be written to the responsestatus
- the selected response statusrequest
- the current requestResponseEntity
instance