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..4af1974 100644 --- a/sky-common/src/main/java/com/sky/constant/MessageConstant.java +++ b/sky-common/src/main/java/com/sky/constant/MessageConstant.java @@ -6,6 +6,7 @@ package com.sky.constant; public class MessageConstant { public static final String PASSWORD_ERROR = "密码错误"; + public static final String ALEADY_EXIST = "已经存在"; public static final String ACCOUNT_NOT_FOUND = "账号不存在"; public static final String ACCOUNT_LOCKED = "账号被锁定"; public static final String UNKNOWN_ERROR = "未知错误"; 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..ff51ff5 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,28 @@ public class GlobalExceptionHandler { return Result.error(ex.getMessage()); } + + /** + * 捕获系统级的数据库异常 + * @param ex + * @return + */ + @ExceptionHandler + public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){ + //Duplicate entry 'lisi' for key 'idx_username' + String message = ex.getMessage(); + log.error("异常信息:{}",message ); + //动态获取错误数据 + if (message.contains("Duplicate entry")) { + String[] msgs = message.split(" "); + String username = msgs[2]; +// String msg = username + "已经存在"; + String msg = username + MessageConstant.ALEADY_EXIST; + return Result.error(msg); + } + +// return Result.error(ex.getMessage()); + return Result.error(MessageConstant.UNKNOWN_ERROR); + } + }