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
以外のデータをレスポンスで返そうとすると発生するエラー。
参考