From 74f87e4a2ab0430e1252b34d52473615e9c6f4b4 Mon Sep 17 00:00:00 2001 From: pricelees Date: Thu, 24 Jul 2025 10:02:18 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=83=88=EB=A1=9C=EC=9A=B4=20?= =?UTF-8?q?=EC=BB=A4=EC=8A=A4=ED=85=80=20=EC=98=88=EC=99=B8=20=EC=A0=84?= =?UTF-8?q?=ED=99=98=EC=9C=BC=EB=A1=9C=20=EA=B8=B0=EC=A1=B4=20=EC=BB=A4?= =?UTF-8?q?=EC=8A=A4=ED=85=80=20=EC=98=88=EC=99=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/exception/AuthException.kt | 4 +- .../common/dto/response/CommonApiResponse.kt | 6 --- .../roomescape/common/exception/ErrorType.kt | 53 ------------------- .../exception/ExceptionControllerAdvice.kt | 28 ++++------ .../common/exception/RoomescapeException.kt | 12 +---- .../member/exception/MemberException.kt | 4 +- .../payment/exception/PaymentException.kt | 4 +- .../exception/ReservationException.kt | 4 +- .../theme/exception/ThemeException.kt | 4 +- .../time/exception/TimeException.kt | 4 +- 10 files changed, 22 insertions(+), 101 deletions(-) delete mode 100644 src/main/kotlin/roomescape/common/exception/ErrorType.kt diff --git a/src/main/kotlin/roomescape/auth/exception/AuthException.kt b/src/main/kotlin/roomescape/auth/exception/AuthException.kt index 55d9a839..97fb8410 100644 --- a/src/main/kotlin/roomescape/auth/exception/AuthException.kt +++ b/src/main/kotlin/roomescape/auth/exception/AuthException.kt @@ -1,8 +1,8 @@ package roomescape.auth.exception -import roomescape.common.exception.RoomescapeExceptionV2 +import roomescape.common.exception.RoomescapeException class AuthException( override val errorCode: AuthErrorCode, override val message: String = errorCode.message -) : RoomescapeExceptionV2(errorCode, message) +) : RoomescapeException(errorCode, message) diff --git a/src/main/kotlin/roomescape/common/dto/response/CommonApiResponse.kt b/src/main/kotlin/roomescape/common/dto/response/CommonApiResponse.kt index 9cf1fc7f..1c9e1f17 100644 --- a/src/main/kotlin/roomescape/common/dto/response/CommonApiResponse.kt +++ b/src/main/kotlin/roomescape/common/dto/response/CommonApiResponse.kt @@ -2,7 +2,6 @@ package roomescape.common.dto.response import com.fasterxml.jackson.annotation.JsonInclude import roomescape.common.exception.ErrorCode -import roomescape.common.exception.ErrorType @JsonInclude(JsonInclude.Include.NON_NULL) data class CommonApiResponse( @@ -10,11 +9,6 @@ data class CommonApiResponse( ) data class CommonErrorResponse( - val errorType: ErrorType, - val message: String? = errorType.description -) - -data class CommonErrorResponseV2( val code: String, val message: String ) { diff --git a/src/main/kotlin/roomescape/common/exception/ErrorType.kt b/src/main/kotlin/roomescape/common/exception/ErrorType.kt deleted file mode 100644 index d002f14d..00000000 --- a/src/main/kotlin/roomescape/common/exception/ErrorType.kt +++ /dev/null @@ -1,53 +0,0 @@ -package roomescape.common.exception - -enum class ErrorType( - val description: String -) { - // 400 Bad Request - REQUEST_DATA_BLANK("요청 데이터에 유효하지 않은 값(null OR 공백)이 포함되어있습니다."), - INVALID_REQUEST_DATA_TYPE("요청 데이터 형식이 올바르지 않습니다."), - INVALID_REQUEST_DATA("요청 데이터 값이 올바르지 않습니다."), - INVALID_DATE_RANGE("종료 날짜는 시작 날짜 이전일 수 없습니다."), - HAS_RESERVATION_OR_WAITING("같은 테마에 대한 예약(대기)는 한 번만 가능합니다."), - - // 401 Unauthorized - EXPIRED_TOKEN("토큰이 만료되었습니다. 다시 로그인 해주세요."), - UNSUPPORTED_TOKEN("지원하지 않는 JWT 토큰입니다."), - MALFORMED_TOKEN("형식이 맞지 않는 JWT 토큰입니다."), - INVALID_SIGNATURE_TOKEN("잘못된 JWT 토큰 Signature 입니다."), - ILLEGAL_TOKEN("JWT 토큰의 Claim 이 비어있습니다."), - INVALID_TOKEN("JWT 토큰이 존재하지 않거나 유효하지 않습니다."), - NOT_EXIST_COOKIE("쿠키가 존재하지 않습니다. 로그인이 필요한 서비스입니다."), - - // 403 Forbidden - LOGIN_REQUIRED("로그인이 필요한 서비스입니다."), - PERMISSION_DOES_NOT_EXIST("접근 권한이 존재하지 않습니다."), - - // 404 Not Found - MEMBER_NOT_FOUND("회원(Member) 정보가 존재하지 않습니다."), - RESERVATION_NOT_FOUND("예약(Reservation) 정보가 존재하지 않습니다."), - TIME_NOT_FOUND("예약 시간(Time) 정보가 존재하지 않습니다."), - THEME_NOT_FOUND("테마(Theme) 정보가 존재하지 않습니다."), - PAYMENT_NOT_FOUND("결제(Payment) 정보가 존재하지 않습니다."), - - // 405 Method Not Allowed - METHOD_NOT_ALLOWED("지원하지 않는 HTTP Method 입니다."), - - // 409 Conflict - TIME_IS_USED_CONFLICT("삭제할 수 없는 시간대입니다. 예약이 존재하는지 확인해주세요."), - THEME_IS_USED_CONFLICT("삭제할 수 없는 테마입니다. 예약이 존재하는지 확인해주세요."), - TIME_DUPLICATED("이미 해당 시간이 존재합니다."), - THEME_DUPLICATED("같은 이름의 테마가 존재합니다."), - RESERVATION_DUPLICATED("해당 시간에 이미 예약이 존재합니다."), - RESERVATION_PERIOD_IN_PAST("이미 지난 시간대는 예약할 수 없습니다."), - CANCELED_BEFORE_PAYMENT("취소 시간이 결제 시간 이전일 수 없습니다."), - - // 500 Internal Server Error, - INTERNAL_SERVER_ERROR("서버 내부에서 에러가 발생하였습니다."), - UNEXPECTED_ERROR("예상치 못한 에러가 발생하였습니다. 잠시 후 다시 시도해주세요."), - - // Payment Error - PAYMENT_ERROR("결제(취소)에 실패했습니다. 결제(취소) 정보를 확인해주세요."), - PAYMENT_SERVER_ERROR("결제 서버에서 에러가 발생하였습니다. 잠시 후 다시 시도해주세요.") - ; -} diff --git a/src/main/kotlin/roomescape/common/exception/ExceptionControllerAdvice.kt b/src/main/kotlin/roomescape/common/exception/ExceptionControllerAdvice.kt index ef6a0914..2a877347 100644 --- a/src/main/kotlin/roomescape/common/exception/ExceptionControllerAdvice.kt +++ b/src/main/kotlin/roomescape/common/exception/ExceptionControllerAdvice.kt @@ -8,43 +8,33 @@ import org.springframework.web.bind.MethodArgumentNotValidException import org.springframework.web.bind.annotation.ExceptionHandler import org.springframework.web.bind.annotation.RestControllerAdvice import roomescape.common.dto.response.CommonErrorResponse -import roomescape.common.dto.response.CommonErrorResponseV2 @RestControllerAdvice class ExceptionControllerAdvice( private val logger: KLogger = KotlinLogging.logger {} ) { - @ExceptionHandler(value = [RoomescapeExceptionV2::class]) - fun handleRoomException(e: RoomescapeExceptionV2): ResponseEntity { + @ExceptionHandler(value = [RoomescapeException::class]) + fun handleRoomException(e: RoomescapeException): ResponseEntity { logger.error(e) { "message: ${e.message}" } val errorCode: ErrorCode = e.errorCode return ResponseEntity .status(errorCode.httpStatus) - .body(CommonErrorResponseV2(errorCode, e.message)) - } - - @ExceptionHandler(value = [RoomescapeException::class]) - fun handleRoomEscapeException(e: RoomescapeException): ResponseEntity { - logger.error(e) { "message: ${e.message}, invalidValue: ${e.invalidValue}" } - - return ResponseEntity - .status(e.httpStatus) - .body(CommonErrorResponse(e.errorType)) + .body(CommonErrorResponse(errorCode, e.message)) } @ExceptionHandler(value = [HttpMessageNotReadableException::class]) - fun handleHttpMessageNotReadableException(e: HttpMessageNotReadableException): ResponseEntity { + fun handleHttpMessageNotReadableException(e: HttpMessageNotReadableException): ResponseEntity { logger.error(e) { "message: ${e.message}" } val errorCode: ErrorCode = CommonErrorCode.INVALID_INPUT_VALUE return ResponseEntity .status(errorCode.httpStatus) - .body(CommonErrorResponseV2(errorCode, e.message ?: errorCode.message)) + .body(CommonErrorResponse(errorCode)) } @ExceptionHandler(value = [MethodArgumentNotValidException::class]) - fun handleMethodArgumentNotValidException(e: MethodArgumentNotValidException): ResponseEntity { + fun handleMethodArgumentNotValidException(e: MethodArgumentNotValidException): ResponseEntity { val message: String = e.bindingResult.allErrors .mapNotNull { it.defaultMessage } .joinToString(", ") @@ -53,16 +43,16 @@ class ExceptionControllerAdvice( val errorCode: ErrorCode = CommonErrorCode.INVALID_INPUT_VALUE return ResponseEntity .status(errorCode.httpStatus) - .body(CommonErrorResponseV2(errorCode, message)) + .body(CommonErrorResponse(errorCode)) } @ExceptionHandler(value = [Exception::class]) - fun handleException(e: Exception): ResponseEntity { + fun handleException(e: Exception): ResponseEntity { logger.error(e) { "message: ${e.message}" } val errorCode: ErrorCode = CommonErrorCode.UNEXPECTED_SERVER_ERROR return ResponseEntity .status(errorCode.httpStatus) - .body(CommonErrorResponseV2(errorCode)) + .body(CommonErrorResponse(errorCode)) } } diff --git a/src/main/kotlin/roomescape/common/exception/RoomescapeException.kt b/src/main/kotlin/roomescape/common/exception/RoomescapeException.kt index 44d5673a..dcd8353f 100644 --- a/src/main/kotlin/roomescape/common/exception/RoomescapeException.kt +++ b/src/main/kotlin/roomescape/common/exception/RoomescapeException.kt @@ -1,16 +1,6 @@ package roomescape.common.exception -import org.springframework.http.HttpStatusCode - -class RoomescapeException( - val errorType: ErrorType, - val invalidValue: String? = "", - val httpStatus: HttpStatusCode, -) : RuntimeException(errorType.description) { - constructor(errorType: ErrorType, httpStatus: HttpStatusCode) : this(errorType, null, httpStatus) -} - -open class RoomescapeExceptionV2( +open class RoomescapeException( open val errorCode: ErrorCode, override val message: String = errorCode.message ) : RuntimeException(message) diff --git a/src/main/kotlin/roomescape/member/exception/MemberException.kt b/src/main/kotlin/roomescape/member/exception/MemberException.kt index 62bea601..0102f394 100644 --- a/src/main/kotlin/roomescape/member/exception/MemberException.kt +++ b/src/main/kotlin/roomescape/member/exception/MemberException.kt @@ -1,8 +1,8 @@ package roomescape.member.exception -import roomescape.common.exception.RoomescapeExceptionV2 +import roomescape.common.exception.RoomescapeException class MemberException( override val errorCode: MemberErrorCode, override val message: String = errorCode.message -) : RoomescapeExceptionV2(errorCode, message) +) : RoomescapeException(errorCode, message) diff --git a/src/main/kotlin/roomescape/payment/exception/PaymentException.kt b/src/main/kotlin/roomescape/payment/exception/PaymentException.kt index 44c59be0..33cac713 100644 --- a/src/main/kotlin/roomescape/payment/exception/PaymentException.kt +++ b/src/main/kotlin/roomescape/payment/exception/PaymentException.kt @@ -1,8 +1,8 @@ package roomescape.payment.exception -import roomescape.common.exception.RoomescapeExceptionV2 +import roomescape.common.exception.RoomescapeException class PaymentException( override val errorCode: PaymentErrorCode, override val message: String = errorCode.message -) : RoomescapeExceptionV2(errorCode, message) +) : RoomescapeException(errorCode, message) diff --git a/src/main/kotlin/roomescape/reservation/exception/ReservationException.kt b/src/main/kotlin/roomescape/reservation/exception/ReservationException.kt index 885d39c5..9f251380 100644 --- a/src/main/kotlin/roomescape/reservation/exception/ReservationException.kt +++ b/src/main/kotlin/roomescape/reservation/exception/ReservationException.kt @@ -1,9 +1,9 @@ package roomescape.reservation.exception import roomescape.common.exception.ErrorCode -import roomescape.common.exception.RoomescapeExceptionV2 +import roomescape.common.exception.RoomescapeException class ReservationException( override val errorCode: ErrorCode, override val message: String = errorCode.message -) : RoomescapeExceptionV2(errorCode, message) +) : RoomescapeException(errorCode, message) diff --git a/src/main/kotlin/roomescape/theme/exception/ThemeException.kt b/src/main/kotlin/roomescape/theme/exception/ThemeException.kt index 9129f93e..d678e4ea 100644 --- a/src/main/kotlin/roomescape/theme/exception/ThemeException.kt +++ b/src/main/kotlin/roomescape/theme/exception/ThemeException.kt @@ -1,8 +1,8 @@ package roomescape.theme.exception -import roomescape.common.exception.RoomescapeExceptionV2 +import roomescape.common.exception.RoomescapeException class ThemeException( override val errorCode: ThemeErrorCode, override val message: String = errorCode.message -) : RoomescapeExceptionV2(errorCode, message) +) : RoomescapeException(errorCode, message) diff --git a/src/main/kotlin/roomescape/time/exception/TimeException.kt b/src/main/kotlin/roomescape/time/exception/TimeException.kt index a073fdc6..ac97905e 100644 --- a/src/main/kotlin/roomescape/time/exception/TimeException.kt +++ b/src/main/kotlin/roomescape/time/exception/TimeException.kt @@ -1,9 +1,9 @@ package roomescape.time.exception import roomescape.common.exception.ErrorCode -import roomescape.common.exception.RoomescapeExceptionV2 +import roomescape.common.exception.RoomescapeException class TimeException( override val errorCode: ErrorCode, override val message: String = errorCode.message -) : RoomescapeExceptionV2(errorCode, message) +) : RoomescapeException(errorCode, message)