diff --git a/sky-common/src/main/java/com/sky/constant/MessageConstant.java b/sky-common/src/main/java/com/sky/constant/MessageConstant.java index c6b645d..b700266 100644 --- a/sky-common/src/main/java/com/sky/constant/MessageConstant.java +++ b/sky-common/src/main/java/com/sky/constant/MessageConstant.java @@ -24,4 +24,5 @@ public class MessageConstant { public static final String ORDER_STATUS_ERROR = "订单状态错误"; public static final String ORDER_NOT_FOUND = "订单不存在"; + public static final String ALREADY_EXISTS = "已存在了"; } diff --git a/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java b/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java index 1a48598..6a1cd27 100644 --- a/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java +++ b/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java @@ -1,11 +1,14 @@ package com.sky.handler; +import com.sky.constant.MessageConstant; import com.sky.exception.BaseException; import com.sky.result.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import java.sql.SQLIntegrityConstraintViolationException; + /** * 全局异常处理器,处理项目中抛出的业务异常 */ @@ -24,4 +27,21 @@ public class GlobalExceptionHandler { return Result.error(ex.getMessage()); } + /** + * 处理SQL异常 + * @param exception SQLIntegrityConstraintViolationException + * @return Result + */ + @ExceptionHandler + public Result exceptionHandler(SQLIntegrityConstraintViolationException exception) { + String message = exception.getMessage(); + if (message.contains("Duplicate entry")) { + String[] split = message.split(" "); + String username = split[2]; + String msg = username + MessageConstant.ALREADY_EXISTS; + return Result.error(msg); + } else { + return Result.error(MessageConstant.UNKNOWN_ERROR); + } + } }