이게 뭐람.. 계속 티스토리 400 Not found가 떠서 다른 Tistory 블로그도 다 그렇게 뜨길래 서버가 터진줄 알고 계속 기다렸더니 혹시나 bing으로 들어가봤더니 되는..? 이게 무슨일이지.. 쨌든 다시 bing으로 시작한다.. 얼마나 밀린거야
오늘 알아 봐볼 범위는 Spring MVC부분에서 Excpetion 즉 예외에 대한 처리 부분이다.
기본적으로 Spring boot에서는 한 클래스 안에서 @ExceptionHandler을 명시하고 받을 Exception을 명시하면 그에 대한 예외를 처리할 수 있다. 예를 들면
@ExceptionHandler
public ResponseEntity handleException(Exception e) {
final List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
return new ResponseEntity<>(fieldErrors, HttpStatus.BAD_REQUEST);
}
이렇게 처리를 해놓으면 예외가 이쪽 헨들러로 메핑되어서 원하는 로직을 실행 시킬 수 있다. 하지만 이 헨들러메핑을 클래스마다 여러개 작성한다면, 핵심 로직이 아닌데 들어가게 되고, 가독성 또한 떨어지게 된다. 즉 이를 방지하기 위해선
@RestControllerAdvice
를 이용하면 된다. 예시로는 이렇다
@RestControllerAdvice
public class GlobalExceptionAdvice {
}
이렇게 RestContollerAdvice를 명시해주면 이 클래스는 예외처리를 담당하는 클래스가 되는 것이고 여기서 이제 위에 언급한 Exception 헨들러를 통해서 여러가지 Exception에 해당하는 것을 Mapping시키면 되는 것이다.
여기서 기본적으로
throw new RuntimeException("Not found member");
이렇게 Exception을 던지고 그냥
(RuntimeException e) {
이렇게 받는다면 무슨 에러인지 모를 수 가 있다. 그렇기에 사용자가 비지니스적으로 예외가 발생할 것을 판단하고 예외처리를 할 시에는 개인적으로 에러코드를 ENUM으로 만들어 서 처리하는 게 가장 좋다.
MEMBER_NOT_FOUND(404, "Member Not Found");
이런 형식으로 에러 코드를 미리 만들어 놓고, 비지니스 적인 예외처리를 하면 되는 것이다.
'부트캠프 > 코트스테이츠 백엔드 코스' 카테고리의 다른 글
35일차 회고 (0) | 2023.05.01 |
---|---|
32~34 (0) | 2023.04.30 |
28~30회고 (0) | 2023.04.16 |
24~27차 회고 (1) | 2023.04.16 |
24일차 스프링 프레임워크 (0) | 2023.04.11 |