강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

KMC님의 프로필 이미지
KMC

작성한 질문수

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

강사님

작성

·

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 예외를 언제 어떻게 사용할지 등도 고민해보시면 좋을 것 같습니다.

현업에서는 개발자 분마다 성향이 다르셔서 무조건 정해진 규칙은 없는 것 같아요! 답변이 도움이 되었으면 좋겠습니다. 감사합니다~ 🙏

KMC님의 프로필 이미지
KMC
질문자

감사합니다.

KMC님의 프로필 이미지
KMC

작성한 질문수

질문하기