기존 프로젝트의 코드에서 예외 처리에 대한 문제점을 찾아 수정하고 느낀점을 적은 글 입니다.
아래는 이전 코드의 사진입니다.
수정 이전의 @RestControllerAdvice 클래스의 Handler 사진. 도메인별로 관리를 따로하고 있음
수정 이전의 Service Layer 의 검증, 엔티티 삭제 로직의 사진
위 두 모습을 보면서, 다음의 문제를 느꼈습니다.
Optional
클래스의 orElseThrow(Supplier<? extends X> exceptionSupplier)
를 일관성있게 사용하지 못함스프링 Controller 를 통해 받을수 있는 여러 데이터와 검증등의 어노테이션에서는 여러 예외가 발생하고, 여러 메서드의 호출이나 DB조회시 예외가 발생할 소지가 존재합니다. 이러한 예외는 명확한 기준을 세우고 처리 해야하며, 분명한 테스트가 동반되어야 합니다.