diff --git a/push-service/src/main/java/com/xuqm/push/controller/GlobalExceptionHandler.java b/push-service/src/main/java/com/xuqm/push/controller/GlobalExceptionHandler.java new file mode 100644 index 0000000..fd594d0 --- /dev/null +++ b/push-service/src/main/java/com/xuqm/push/controller/GlobalExceptionHandler.java @@ -0,0 +1,28 @@ +package com.xuqm.push.controller; + +import com.xuqm.common.exception.BusinessException; +import com.xuqm.common.model.ApiResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +public class GlobalExceptionHandler { + + private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); + + @ExceptionHandler(BusinessException.class) + public ResponseEntity> handleBusiness(BusinessException ex) { + return ResponseEntity.status(ex.getCode()) + .body(ApiResponse.error(ex.getCode(), ex.getMessage())); + } + + @ExceptionHandler(Exception.class) + public ResponseEntity> handleUnexpected(Exception ex) { + log.error("Unexpected error", ex); + return ResponseEntity.status(500) + .body(ApiResponse.error(500, ex.getClass().getSimpleName() + ": " + ex.getMessage())); + } +}