diff --git a/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java b/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..7ffc45d --- /dev/null +++ b/sky-server/src/main/java/com/sky/handler/GlobalExceptionHandler.java @@ -0,0 +1,46 @@ +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; + +/** + * 全局异常处理器,处理项目中抛出的业务异常 + */ +@RestControllerAdvice +@Slf4j +public class GlobalExceptionHandler { + + /** + * 捕获业务异常 + * @param ex + * @return + */ + @ExceptionHandler + public Result exceptionHandler(BaseException ex){ + log.error("异常信息:{}", ex.getMessage()); + return Result.error(ex.getMessage()); + } + + /* + * 处理sql异常 + * + * */ + @ExceptionHandler + public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){ + //Duplicate entry "zhangsan" for key '...' + String message = ex.getMessage(); + if(message.contains("Duplicate entry")){ + String[] split = message.split(" "); + String username = split[2]; + String msg = username + MessageConstant.ALREADY_EXISTS; + return Result.error(msg); + } + return Result.error(MessageConstant.UNKNOWN_ERROR); + } +}