인프런 커뮤니티 질문&답변
강사님
작성
·
27
·
수정됨
0
백엔드 취준생이 고 강의랑 관련 된 내용은 아니지만
강사님 강의를 2개 정도 구매했습니다. 지금 자바로 프로젝트 2개를 한 상태입니다.
로드 맵 이 있어서 듣게 됐습니다.
보통 Error 관련 코드를 만들 때
@ExceptionHandler 로 컨트롤러에서 발생한 에러를 잡고
@ControllerAdvice 가 모든 에러를 잡아서 관리 해 주는 걸로 다른 강의에서 배웠는데
보통 현업에서는 이렇게 하나요? 제가 프로젝트 두 개 모두
이런식으로 enum 과 class 를 따로 만들어서 했는데 현업에서 어떻게 하는 지 궁금해서 질문드립니다.
@Getter
public class BusinessException extends RuntimeException {
private final HttpStatus status;
private final ErrorCode errorCode;
public BusinessException(ErrorCode errorCode) {
super(errorCode.getMessage());
this.status = errorCode.getErrorCode();
this.errorCode = errorCode;
}
public BusinessException(HttpStatus status, ErrorCode errorCode, String message, Throwable cause) {
super(message, cause);
this.status = status;
this.errorCode = errorCode;
}
public BusinessException(HttpStatus status, String message) {
super(message);
this.status = status;
this.errorCode = null;
}
}
@Getter
@AllArgsConstructor
public enum ErrorCode {
TOKEN_NOT_FOUND(HttpStatus.BAD_REQUEST, "토큰이 없습니다."),
JWT_EXPIRED(HttpStatus.BAD_REQUEST, "jwt 토큰이 만료되었습니다. "),
INVALID_JWT(HttpStatus.BAD_REQUEST, "jwt 토큰을 찾을 수 없습니다."),
ACCEPTED_EXISTS(HttpStatus.CONFLICT, "팔로우를 찾을수없습니다."),
FOLLOW_NOT_FOUND(HttpStatus.CONFLICT, "팔로우를 찾을수없습니다."),
INVALID_FOLLOW_STATUS(HttpStatus.CONFLICT, "팔로우상태가 아닙니다."),
AGREEMENT_INPUT(HttpStatus.CONFLICT, "약관 동의가 필요합니다."),
INVALID_EMAIL_INPUT(HttpStatus.BAD_REQUEST, "해당 이메일은 소셜 로그인 계정입니다. 소셜 로그인을 이용하세요."),
DUPLICATE_RESOURCE(HttpStatus.FORBIDD답변 1
0
최태현
지식공유자
안녕하세요! KMC님~ ☺ 좋은 질문 이시네요~
결론부터 말씀드리면 예외 클래스를 적절하게 다루고 있으신 것 같아요! 저 역시 custom exception class가 계속해서 생기는 것 보다는 하나의 예외 클래스와 예외 case를 다루는 enum의 조합을 선호하는 편입니다
물론 던져진 예외를 말씀해주신 ControllerAdvice에서 잡게 되고요~
보다 디테일하게는 예외 경우를 어떻게 나눌지 표준 예외와 custom 예외를 언제 어떻게 사용할지 등도 고민해보시면 좋을 것 같습니다.
현업에서는 개발자 분마다 성향이 다르셔서 무조건 정해진 규칙은 없는 것 같아요! 답변이 도움이 되었으면 좋겠습니다. 감사합니다~ 🙏






감사합니다.