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()); } /** * 捕获系统级的数据库异常 * @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); } }