본문 바로가기
개인 공부용 프로젝트/schedule.jdbc.api

(도전과제 시작) author 테이블 만들기, custom exception 추가

by pon9 2024. 12. 5.

레벨 3이다. 테이블이 하나가 추가가 되고, FK를 적절히 사용해야 한다.

처음에 만들어둔 erd대로 db를 수정하고 시작하면 된다.

우선 author 테이블을 추가해주고,

ide에서 외래 키도 추가해준다.

 

그리고, author 클래스 작업에 앞서서 일단 예외처리를 먼저 빨리 설정해주고싶었다.

예외처리를 그동안 badinputexception("오류요")로 대충 퉁쳤다. "오류요"가 더 늘어나면 이제부터 수정할 때 힘들어질 게 뻔하니까 예외클래스 먼저 만들어놓고 시작하자.

@Getter
public class CustomException extends RuntimeException {

    private final ErrorCode errorCode;

    public CustomException(ErrorCode errorCode) {
        super(errorCode.getMessage());
        this.errorCode = errorCode;
    }
}

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(CustomException.class)
    public ResponseEntity<Map<String, Object>> handleCustomException(CustomException e){
        ErrorCode errorCode = e.getErrorCode();
        return ResponseEntity.status(errorCode.getStatus())
                .body(Map.of(
                        "⛔: ", errorCode.getMessage(),
                        "에러코드: ", errorCode.getStatus()
                ));
    }
}

@Getter
@AllArgsConstructor
public enum ErrorCode {

    BAD_REQUEST(HttpStatus.BAD_REQUEST, "비밀번호를 잘못 입력하였습니다."),
    USER_NOT_FOUND(HttpStatus.BAD_REQUEST, "존재하지 않는 사용자입니다."),
    NOT_FOUND(HttpStatus.NOT_FOUND, "404: 없는 페이지입니다."),
    FORBIDDEN_OPERATION(HttpStatus.FORBIDDEN, "권한이 없습니다."),
    INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "500: 서버 관리를 못해서 줴송합니다.."),
    BAD_GATEWAY(HttpStatus.BAD_GATEWAY, "502: 잘못된 접근입니다.");

    private final HttpStatus status;
    private final String message;
}

에러코드를 enum으로 만들고 exceptionhandler를 통해 전역적으로 같은 에러코드와 형식으로 처리되게 만들었다.

기존 exception들을 customexception으로 바꿔줬다.

 

그리고 "이미 삭제된 정보를 조회하려 할 때" 라는 예외조건이 있어서,

boolean type의 is_deleted 열을 schedule 테이블에 추가해줬다.

 

근데.. 막막하다. 지금의 구조를 어떻게 둘로 나누지..

'개인 공부용 프로젝트 > schedule.jdbc.api' 카테고리의 다른 글

도전과제 과정  (0) 2024.12.09
트러블슈팅 : 필수과제 버그 수정  (0) 2024.12.05
Lv1, Lv2  (0) 2024.12.04