From a0b93636c99b66edb6364ee1dcf5cf10a7e7dd42 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Tue, 14 Jul 2026 06:58:57 +0000 Subject: [PATCH] =?UTF-8?q?TA=20=EC=97=AD=ED=95=A0=20Spring=20=EA=B2=BD?= =?UTF-8?q?=EA=B3=84=20smoke=20(role-ta-live-1522-001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/GlobalExceptionHandler.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/com/klaroworks/runtime/exception/GlobalExceptionHandler.java diff --git a/src/main/java/com/klaroworks/runtime/exception/GlobalExceptionHandler.java b/src/main/java/com/klaroworks/runtime/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..7ac66ac --- /dev/null +++ b/src/main/java/com/klaroworks/runtime/exception/GlobalExceptionHandler.java @@ -0,0 +1,37 @@ +package com.klaroworks.runtime.exception; + +import com.klaroworks.runtime.dto.ApiResponse; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@Slf4j +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(BusinessException.class) + public ResponseEntity> handleBusinessException(BusinessException ex) { + log.warn("Business exception: {}", ex.getErrorCode().getCode()); + return ResponseEntity.status(ex.getErrorCode().getHttpStatus()) + .body(ApiResponse.error(ex.getErrorCode())); + } + + @ExceptionHandler(MethodArgumentNotValidException.class) + public ResponseEntity> handleValidationException(MethodArgumentNotValidException ex) { + var errors = ex.getBindingResult().getFieldErrors().stream() + .collect(java.util.stream.Collectors.toMap( + e -> e.getField(), e -> e.getDefaultMessage())); + log.warn("Validation failed: {}", errors); + return ResponseEntity.badRequest() + .body(ApiResponse.error(ErrorCode.INVALID_REQUEST, errors)); + } + + @ExceptionHandler(Exception.class) + public ResponseEntity> handleGenericException(Exception ex) { + log.error("Unexpected error", ex); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(ApiResponse.error(ErrorCode.INTERNAL_SERVER_ERROR)); + } +}