ClassNotFoundException 등NullPointerException , ArrayIndexOutOfBoundsException 등✔ 서비스 계층에서 예외 던지기 (throw)
- 조회되는 회원이 없다고 가정하고 예외 메세지를 포함한 후 메서드 밖으로 던지기
 ✔
GlobalExceptionAdvice예외 잡기 (catch)
- 콘솔에 메세지만 출력
 ✔
handleResourceNotFoundException()메서드의 문제점
- 서비스 계층에서 의도적으로 던질 수 있는 예외 상황은 다양하게 존재할 수 있기 때문에 적절x
 
RuntimeException을 그대로 던지고 잡는 것은 명확하지 않고 구체적으로 정보 얻기 어려움
✔ 예외 코드 정의
- CustomExeception에 사용할 ExceptionCode를 enum으로 정의
 ✔ BusinessLogicException 구현
- ExceptionCode를 멤버 변수로 지정하여 생성자를 통해서 좀 더 구체적인 예외정보 제공
 
상위 클래스인 RuntimeException의 생성자(super)로 예외 메세지 전달- 개발자가 의도적으로 예외를 던져야 하는 다양한 상황에서 ExceptionCode 정보만 바꿔가며 던질 수 있다.
 ✔ 서비스 계층에 BusinessLogicException 적용
- 회원 정보가 존재하지 않는다는
 MEMBER_NOT_FOUND를 BusinessLogicException 생성자의 파라미터로 전달✔ Exception Advice에서 BusinessLogicException 처리
- 한가지 유형으로 고정된 예외를 처리할 경우에는
 @ResponseStatus로 HttpStatus를 지정해서 사용하고, 다양한 유형의 Custom Exception을 처리할 경우에는ResponseEntity를 사용
