public class DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver
HandlerExceptionResolver
インターフェースのデフォルトの実装。 この例外リゾルバーは、一般的な Spring DispatcherServlet
でデフォルトで有効になっています。
例外 | HTTP ステータスコード |
---|---|
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
修飾子と型 | フィールドと説明 |
---|---|
static StringSE | PAGE_NOT_FOUND_LOG_CATEGORY リクエストに対してマップされたハンドラーが見つからない場合に使用するログカテゴリ。 |
protected static Log | pageNotFoundLogger リクエストに対してマップされたハンドラーが見つからない場合に使用する追加のロガー。 |
logger
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
DefaultHandlerExceptionResolver() 順序を Ordered.LOWEST_PRECEDENCE に設定します。 |
buildLogMessage, getOrder, hasHandlerMappings, logException, prepareResponse, preventCaching, resolveException, setMappedHandlerClasses, setMappedHandlers, setOrder, setPreventResponseCaching, setWarnLogCategory, shouldApplyTo
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public static final StringSE PAGE_NOT_FOUND_LOG_CATEGORY
pageNotFoundLogger
, 定数フィールド値 protected static final Log pageNotFoundLogger
public DefaultHandlerExceptionResolver()
Ordered.LOWEST_PRECEDENCE
に設定します。@Nullable protected ModelAndView doResolveException(HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler, ExceptionSE ex)
AbstractHandlerExceptionResolver
ModelAndView
を返します。特定の例外チェックを適用するために、サブクラスでオーバーライドできます。このテンプレートメソッドは、この解決が適用されるかどうか ( "mappedHandlers" など) を確認した後に呼び出されるため、実装では実際の例外処理をそのまま続行できます。
AbstractHandlerExceptionResolver
の doResolveException
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー、または例外時に何も選択されなかった場合は null
(たとえば、マルチパート解決が失敗した場合)ex
- ハンドラーの実行中にスローされた例外 ModelAndView
、または解決チェーンでのデフォルト処理の場合は null
protected ModelAndView handleHttpRequestMethodNotSupported(HttpRequestMethodNotSupportedException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装では、警告をログに記録し、HTTP 405 エラーを送信し、"Allow" ヘッダーを設定して、空の ModelAndView
を返します。または、フォールバックビューを選択するか、HttpRequestMethodNotSupportedException をそのまま再スローできます。
ex
- 処理される HttpRequestMethodNotSupportedExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー、または例外時に何も選択されなかった場合は null
(たとえば、マルチパート解決が失敗した場合)IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupportedException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は HTTP 415 エラーを送信し、"Accept" ヘッダーを設定して、空の ModelAndView
を返します。または、フォールバックビューを選択するか、HttpMediaTypeNotSupportedException をそのまま再スローできます。
ex
- 処理される HttpMediaTypeNotSupportedExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleHttpMediaTypeNotAcceptable(HttpMediaTypeNotAcceptableException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
Accept
ヘッダーを介して表現されます)。 デフォルトの実装は HTTP 406 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、HttpMediaTypeNotAcceptableException をそのまま再スローできます。
ex
- 処理される HttpMediaTypeNotAcceptableExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleMissingPathVariable(MissingPathVariableException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は HTTP 500 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、MissingPathVariableException をそのまま再スローできます。
ex
- 処理される MissingPathVariableExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleMissingServletRequestParameter(MissingServletRequestParameterException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は HTTP 400 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、MissingServletRequestParameterException をそのまま再スローできます。
ex
- 処理される MissingServletRequestParameterExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleServletRequestBindingException(ServletRequestBindingException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は HTTP 400 エラーを送信し、空の ModelAndView
を返します。あるいは、フォールバックビューを選択するか、例外をそのまま再スローできます。
ex
- 処理される例外 request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleConversionNotSupported(ConversionNotSupportedException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
WebDataBinder
変換が発生しないケースを処理します。 デフォルトの実装は HTTP 500 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、ConversionNotSupportedException をそのまま再スローできます。
ex
- 処理される ConversionNotSupportedExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleTypeMismatch(TypeMismatchException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
WebDataBinder
変換エラーが発生した場合のケースを処理します。 デフォルトの実装は HTTP 400 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、TypeMismatchException をそのまま再スローできます。
ex
- 処理される TypeMismatchExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は HTTP 400 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、HttpMessageNotReadableException をそのまま再スローできます。
ex
- 処理される HttpMessageNotReadableExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleHttpMessageNotWritable(HttpMessageNotWritableException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は HTTP 500 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、HttpMessageNotWritableException をそのまま再スローできます。
ex
- 処理される HttpMessageNotWritableExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleMethodArgumentNotValidException(MethodArgumentNotValidException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
RequestBody
または RequestPart
引数など、@Valid
でアノテーションが付けられた引数が検証に失敗した場合の処理。デフォルトでは、HTTP 400 エラーがクライアントに送り返されます。
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleMissingServletRequestPartException(MissingServletRequestPartException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
MultipartFile
、javax.servlet.http.Part
引数が必要であるが欠落しているケースを処理します。デフォルトでは、HTTP 400 エラーがクライアントに送り返されます。
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleBindException(BindException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
BindingResult
の別のメソッド引数が続かないケースを処理します。デフォルトでは、HTTP 400 エラーがクライアントに送り返されます。
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleNoHandlerFoundException(NoHandlerFoundException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は HTTP 404 エラーを送信し、空の ModelAndView
を返します。または、フォールバックビューを選択するか、NoHandlerFoundException をそのまま再スローできます。
ex
- 処理される NoHandlerFoundExceptionrequest
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー、または例外時に何も選択されなかった場合は null
(たとえば、マルチパート解決が失敗した場合)IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected ModelAndView handleAsyncRequestTimeoutException(AsyncRequestTimeoutException ex, HttpServletRequestEE request, HttpServletResponseEE response, @Nullable ObjectSE handler) throws IOExceptionSE
デフォルトの実装は、HTTP 503 エラーを送信します。
ex
- 処理される AsyncRequestTimeoutException
request
- 現在の HTTP リクエスト response
- 現在の HTTP レスポンス handler
- 実行されたハンドラー、または例外時に何も選択されなかった場合は null
(たとえば、マルチパート解決が失敗した場合)IOExceptionSE
- HttpServletResponse.sendError(int, java.lang.String)
EE から潜在的にスローされます protected void sendServerError(ExceptionSE ex, HttpServletRequestEE request, HttpServletResponseEE response) throws IOExceptionSE