Open2
HttpMediaTypeNotAcceptableExceptionで詰まった話
前提状況
-
ControllerAdviceでController内で発生した例外を処理したい -
ControllerAdviceはResponseEntityExceptionHandlerを継承している
発生したこと
-
HttpRequestMethodNotSupportedExceptionを起こしたら、HttpMediaTypeNotAcceptableExceptionも同時に発生した。-
HttpRequestMethodNotSupportedExceptionは想定通りにハンドリングされた -
HttpMediaTypeNotAcceptableExceptionはハンドリングに失敗- その結果、最終的に
DefaultHandlerExceptionResolverが例外処理を行った。
- その結果、最終的に
-
# ハンドリング成功:HttpRequestMethodNotSupportedException
2022-08-22 14:08:12.466 WARN 4539 --- [nio-8080-exec-4] c.t.s.r.c.ProductControllerAdvice : warn:405 METHOD_NOT_ALLOWED Request method 'GET' not supported
# ハンドリング失敗:HttpMediaTypeNotAcceptableException
2022-08-22 14:08:12.467 WARN 4539 --- [nio-8080-exec-4] .m.m.a.ExceptionHandlerExceptionResolver : Failure in @ExceptionHandler com.teamlab.skillup.restfulapi.controller.ProductControllerAdvice#handleException(Exception, WebRequest)
# 失敗の内容
org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
at org..
〜中略〜
# DefaultHandlerExceptionResolverが最終的にエラーを処理
2022-08-22 17:35:38.391 WARN 5688 --- [nio-8080-exec-2] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported]
HttpMediaTypeNotAcceptableExceptionとは?
リクエスト側がリクエストヘッダのAcceptで指定したContent-Type以外のデータをレスポンスで返そうとすると発生するエラー。
参考