728x90
반응형
@ExceptionHandler와 @ResponseStatus를 사용한 에러 핸들링 (AnnotationMethodHandlerExceptionResolver)
@ExceptionHandler는 컨트롤러 파일 내부에서 사용한다.
@RequestMapping(value = "/dataformat", method = RequestMethod.GET)
public String throwDataFormatException(Locale locale, Model model)
throws DataFormatException {
logger.info("This will throw a DataFormatException");
boolean throwException = true;
if (throwException) {
throw new DataFormatException("This is my DataFormatException");
}
return "home";
}
@ExceptionHandler(DataFormatException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "My Response Status Change….!!")
public void handleDataFormatException(DataFormatException ex,
HttpServletResponse response) {
logger.info("Handlng DataFormatException - Catching: " + ex.getClass().getSimpleName());
}
순서를 보면 다음과 같다.
1. 사용자가 '/dataformat' 에 접속한다.
2. DataFormatException이 발생한다.
3. @ExceptionHandler(DataFormatException.class) 어노테이션이 이 익셉션을 캐치하여 처리한다.
4. @ResponseStatus 어노테이션을 통해 원래의 response code를 사용자가 지정한 NOT_FOUND 코드로 바꿔서 출력한다. (404)
정리하자면,
- @ExceptionHandler(Exception.class) 를 컨트롤러 내부에 선언함으로서 해당 컨트롤러의 익셉션을 캐치하고 원하는대로 처리할 수 있다.
- @ResponseStatus 어노테이션을 사용하면 단순 처리뿐만 아니라, 사용자에게 원하는 response code와 원인을 리턴 해줄수 있다.
단점이라면,
각 컨트롤러마다 모두 설정을 해줘야 한다.
728x90
반응형
'SPRINGBOOT > 소스코드' 카테고리의 다른 글
Spring Boot, ExceptionHandler, 전역 예외 처리 로직 작성하기 (0) | 2017.12.06 |
---|---|
[spring] 서블릿 에러 핸들링 - 4 (@ControllerAdvice와 404에러 핸들링) (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 3 (@ControllerAdvice를 사용한 전역 익셉션 처리) (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 2 (CustomException과 @ResponseStatus) (0) | 2017.12.06 |
Spring Boot, Jackson, @JsonView로 멀티 뷰 구성하기 (0) | 2017.10.26 |
Spring Boot, REST API 예외 응답 로직 작성하기 (0) | 2017.10.26 |
Spring Boot, ExceptionHandler, 전역 예외 처리 로직 작성하기 (0) | 2017.10.26 |
Spring Security OAuth 2.0, POST /oauth/check_token 요청 분석 (0) | 2017.10.26 |