부트캠프/코트스테이츠 백엔드 코스

30~31

태태코 2023. 4. 27. 23:52
반응형

이게 뭐람.. 계속 티스토리 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