카테고리 없음

TIL 미완성 정리(Lv5&Lv6)

creator7087 2025. 3. 26. 12:28

제가 생각한 코드: id에 대한 exception:

더보기
public class idException extends RuntimeException{ ;
    
    public idException(){
        super("잘못된 아이디 입니다");
    }
    
    
}
@ExceptionHandler(idException.class)
protected ResponseEntity<String> handlePasswordException (idException ex){
    return new ResponseEntity<>(ex.getMessage(),HttpStatus.BAD_REQUEST);
}
if (!(calendarRepository.checkId().contains(id))){
    throw new idException();
}

제가 블로거에서 찾은 id에 대한 exception:

더보기
import lombok.Getter;
import lombok.RequiredArgsConstructor;


@Getter
@RequiredArgsConstructor
public class CustomException extends RuntimeException {

    private final ErrorCode errorCode;


}
@ExceptionHandler(CustomException.class)
protected ResponseEntity<ErrorDto> handleCustomException(CustomException ex) {
    return ResponseEntity
            .status(HttpStatus.valueOf(ex.getErrorCode().getStatus()))
            .body(new ErrorDto(ex.getErrorCode().getStatus(), ex.getErrorCode().getMessage()));
}
public class ErrorDto {
    int stauts;
    String getErrorCode;
}
import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public class ErrorDto {
    int stauts;
    String getErrorCode;
}
import lombok.AllArgsConstructor;
import lombok.Getter;

@AllArgsConstructor
@Getter
public enum ErrorCode {

    //400 BAD_REQUEST 잘못된 요청
    INVALID_PARAMETER(400, "파라미터 값을 확인해주세요."),

    //404 NOT_FOUND 잘못된 리소스 접근
    ID_NOT_FOUND(404, "존재하지 않는 ID 입니다."),
    PASSWORD_NOT_FOUND(404, "맞지 않는 비밀번호입니다."),
    USER_NOT_FOUND(404, "존재하지 않는 유저입니다."),

정리한 내용

  1. Enum을 사용한 에러 코드 관리
    • 장점
      • 에러 코드를 한 곳에서 관리 가능하여 가독성 증가
      • 에러 코드 수정이 쉬워져 유지보수 용이
      • 여러 CustomException 클래스를 만들지 않아도 되어 중복 코드 감소
    • 단점
      • static을 활용하므로 메모리 사용 증가
      • 대규모 프로젝트에서는 하드웨어 성능이 좋다면 큰 문제가 없지만, 소규모 환경에서는 불필요한 리소스 차지 가능성 높음
    • 결론 : 대규모 프로젝트에서 적합
  2. Custom Exception 클래스를 개별적으로 나누는 방식
    • 장점
      • 각 예외를 클래스로 나누면 한눈에 확인 가능
      • static을 사용하지 않으므로 메모리 소모 최소화
    • 단점
      • 여러 클래스를 생성해야 하므로 코드 분류가 번거로움
      • 코드 중복성이 증가(extend 부분)하여 객체지향적이지 않음
      • 수정 시 클래스 자체를 변경해야 할 가능성이 높음 → 유지보수 불편
    • 결론: 소규모 프로젝트에서 적합
  3. 질문 제가 정의한 내용이 맞는지 확인부탁드립니다. 또한 다른 장단점이 무엇인지 궁금합니다.
  4. 블로그에서 가져온 코드에서 protected으로 캡슐화를 왜 했는지는 모르겠습니다.
더보기