300x250
반응형
500 Server Error를 400 Bad Request로 바꾸고 에러 원인을 명시해주고자 함
@ExceptionHandler, @ResponseStatus 그리고 @RestControllerAdvice를 이용한다
클래스
@RestControllerAdvice 어노테이션을 달아줌
이때 assignableType은 어드바이스를 적용할 클래스 이름 지정
@Slf4j
@RestControllerAdvice(assignableTypes = ActionController.class)
public class ActionControllerAdvice {
...
}
메서드
@ExceptionHandler 어노테이션 달고, 처리할 익셉션 종류 써줌
커스텀 익셉션 써도 되고 자바 기본 익셉션 써도 됨
@ExceptionHandler(value = NoSuchElementException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
protected ErrorMessage NoSuchElementExceptionHandler(NoSuchElementException ex, WebRequest request){
...
}
ActionControllerAdvice.java
@Slf4j
@RestControllerAdvice(assignableTypes = ActionController.class)
public class ActionControllerAdvice {
@ExceptionHandler(value = NoSuchElementException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
protected ErrorMessage NoSuchElementExceptionHandler(NoSuchElementException ex, WebRequest request){
log.info("ActionControllerAdvice : NoSuchElementExceptionException : "+ex.getMessage());
return ErrorMessage.builder()
.state("FAILED")
.failReason("id not exist")
.build();
}
...
}
이렇게 하면 ActionController에서 발생하는 모든 NoSuchElementExceptionException은
컨트롤러 어드바이스에서 지정한 대로 처리됨
300x250
반응형
'IT > 자바, 스프링' 카테고리의 다른 글
intellij 서버 포트번호 변경 (0) | 2021.08.09 |
---|---|
스프링 db연결 설정 (application.properties 파일) (0) | 2021.08.09 |
no Creators, like default constructor, exist 에러 (0) | 2021.08.04 |
JUnit으로 테스트코드 실행했는데 no tests 에러 뜰때 (No tests found for given includes) (0) | 2021.06.10 |
자바 에러 non-static method cannot be referenced from a static context (0) | 2021.06.10 |