From 25fc95fd2aeb97b61d907461444dcd714b65f056 Mon Sep 17 00:00:00 2001 From: pricelees Date: Tue, 7 Oct 2025 22:23:32 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20c4cd1681=20commit=EC=97=90=20=EB=88=84?= =?UTF-8?q?=EB=9D=BD=EB=90=9C=20PaymentExceptionHandler=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/PaymentExceptionHandler.kt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 service/src/main/kotlin/com/sangdol/roomescape/payment/exception/PaymentExceptionHandler.kt diff --git a/service/src/main/kotlin/com/sangdol/roomescape/payment/exception/PaymentExceptionHandler.kt b/service/src/main/kotlin/com/sangdol/roomescape/payment/exception/PaymentExceptionHandler.kt new file mode 100644 index 00000000..942bb6dc --- /dev/null +++ b/service/src/main/kotlin/com/sangdol/roomescape/payment/exception/PaymentExceptionHandler.kt @@ -0,0 +1,40 @@ +package com.sangdol.roomescape.payment.exception + +import com.sangdol.common.types.web.CommonErrorResponse +import com.sangdol.common.web.support.log.WebLogMessageConverter +import io.github.oshai.kotlinlogging.KLogger +import io.github.oshai.kotlinlogging.KotlinLogging +import jakarta.servlet.http.HttpServletRequest +import org.springframework.http.ResponseEntity +import org.springframework.web.bind.annotation.ExceptionHandler +import org.springframework.web.bind.annotation.RestControllerAdvice + +private val log: KLogger = KotlinLogging.logger {} + +@RestControllerAdvice +class PaymentExceptionHandler( + private val logMessageConverter: WebLogMessageConverter +) { + @ExceptionHandler(PaymentException::class) + fun handlePaymentException( + servletRequest: HttpServletRequest, + e: PaymentException + ): ResponseEntity { + val errorCode = e.errorCode + val httpStatus = errorCode.httpStatus + val errorResponse = CommonErrorResponse(errorCode, e.message) + + log.warn { + logMessageConverter.convertToErrorResponseMessage( + servletRequest = servletRequest, + httpStatus = httpStatus, + responseBody = errorResponse, + exception = if (e.message == errorCode.message) null else e + ) + } + + return ResponseEntity + .status(httpStatus.value()) + .body(errorResponse) + } +}