@ControllerAdvice を使用して、Spring Boot コントローラーで例外をキャッチします。@ExceptionHandler では、限られた数の例外をステータス コードで手動で指定できます。
私の質問は、他のすべての例外とそのステータスにどのように対処できるかです。
次のようなステータスでいくつかの例外を指定できます。
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Object> argNotValidExceptionHandler(MethodArgumentNotValidException ex){
String localizeMessage = ex.getLocalizeMessage();
ErrorMessage errorMessage = new ErrorMessage(LocalDateTime.now(), localizeMessage);
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorMessage);
}
すべての例外をキャッチしたいので、@ExceptionHandler で INTERNAL_SERVER_ERROR ステータスの Exception.class を追加で指定する必要があるようです。
この時点で、ステータスが 4** であっても、他のすべての例外についてステータス 500 を取得します。
すべての例外から適切なステータス コードを生成してクライアントに送信するにはどうすればよいですか?