728x90
지난 프로젝트에서 각종 ExcepCode를 하나의 enum에서 관리했다.
기존
public class BusinessLogicException extends RuntimeException {
@Getter
private ExceptionCode exceptionCode;
public BusinessLogicException(ExceptionCode exceptionCode) {
super(exceptionCode.getMessage());
this.exceptionCode = exceptionCode;
}
}
public enum ExceptionCode {
//member
MEMBER_NOT_FOUND(404, "존재하지 않는 회원입니다"),
MEMBER_EXISTS(409, "이미 존재하는 회원입니다"),
//review
//order
//payment
//product
//like
//category
//cart
//question
;
@Getter
private int status;
@Getter
private String message;
ExceptionCode(int code, String message) {
this.status = code;
this.message = message;
}
}
하나의 enum에 여러 도메인들의 ExceptionCode들을 넣고 관리하다 보니 프로젝트가 점점 커질수록 복잡해져 갔다.
그래서 이번 프로젝트에서는 도메인별로 ExceptionCode들을 관리해 보고자 interface를 활용해 보았다.
개선 후
public interface ExceptionCode {
int getStatus();
String getMessage();
}
@Getter
@AllArgsConstructor
public enum MemberExceptionCode implements ExceptionCode {
MEMBER_NOT_FOUND(404, "요청하신 회원을 찾을 수 없습니다.");
private int status;
private String message;
}
이런 식으로 도메인 별로 ExceptionCode를 구현하여 사용하는 식으로 개선해 보았다.
물론 새로운 도메인이 생길 때마다 새로 코드를 입력해야 하는 귀찮음이 존재하며, 코드를 반복적으로 입력해주어야 한다.
하지만 예외코드들을 도메인별로 관리하기 때문에 수정이나 삭제가 필요한 경우 쉽게 찾을 수 있어 유지보수에 굉장히 용이한 것 같다.
장점
- 유지보수에 용이
단점
- 도메인 별로 enum을 만들어 주어야 함
728x90
'개발일지 > 돌픽' 카테고리의 다른 글
Google Custom Search API 사용해보기 (0) | 2023.04.30 |
---|---|
테스트 시 SpringSecurity 비활성화 하기 (0) | 2023.04.28 |
Querydsl .orderBy() (0) | 2023.04.27 |
MySql 랜덤 정렬 (0) | 2023.04.25 |
이상형월드컵 프로젝트 (0) | 2023.04.18 |