반응형
@ControllerAdvice
@ExceptionHandler를 사용해 예외를 처리했지만 정상 코드와 예외 처리 코드가 하나의 컨트롤러에 있어서 분리하는 수업을진행했다.
@Slf4j
@RestControllerAdvice(basePackages = "hello.exception.api")
public class ExControllerAdvice {
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(IllegalArgumentException.class)
public ErrorResult illegalExHandler(IllegalArgumentException e) {
log.error("[exceptionHandler] ex", e);
return new ErrorResult("BAD", e.getMessage());
}
@ExceptionHandler
public ResponseEntity<ErrorResult> userExHandler(UserException e) {
log.error("[exceptionHandler] ex", e);
ErrorResult errorResult = new ErrorResult("USER-EX", e.getMessage());
return new ResponseEntity(errorResult, HttpStatus.BAD_REQUEST);
}
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ExceptionHandler
public ErrorResult exHandler (Exception e) {
log.error("[exceptionHandler] ex", e);
return new ErrorResult("EX", "내부 오류");
}
}
컨트롤러를 새로 만들고 예외 처리 코드만 싹 가져왔다.
이렇게 해도 예외 처리가 정상적으로 동작하는 것을 확인할 수 있었다.
@ControllerAdivce는 대상으로 지정한 여러 컨트롤러에 ExceptionHandler와 InitBinder 기능을 부여해 준다. 만약 대상을 지정하지 않으면 모든 컨트롤러에 적용되고 이번에는 패키지 경로로 적용해서 실습을 진행해 봤다. 즉, 특정 클래스를 지정해서도 사용할 수 있는 것이다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 타입 컨버터 - Converter (0) | 2022.03.14 |
---|---|
[Spring Boot] : Spring type converter (0) | 2022.03.13 |
[Spring Boot] : @ExceptionHandler 사용해 보기(2) (0) | 2022.03.10 |
[Spring Boot] : @ExceptionHandler 사용해 보기(1) (0) | 2022.03.09 |
[Spring Boot] : 스프링 부트 이해 (0) | 2022.03.08 |
댓글