New file |
| | |
| | | package com.cl.common.handler; |
| | | |
| | | |
| | | |
| | | import com.cl.common.constant.MessageConstant; |
| | | import com.cl.common.exception.BaseException; |
| | | import com.cl.common.exception.user.InterceptorException; |
| | | import com.cl.common.result.Result; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.validation.ObjectError; |
| | | import org.springframework.web.bind.MethodArgumentNotValidException; |
| | | import org.springframework.web.bind.annotation.ExceptionHandler; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | 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 loginHandler(InterceptorException ex){ |
| | | log.error("异常信息:{}", ex.getMessage()); |
| | | return Result.error(401,ex.getMessage()); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 数据校验异常 |
| | | * @param e |
| | | * @return |
| | | */ |
| | | @ExceptionHandler(value = MethodArgumentNotValidException.class) |
| | | public Result errorHandler(MethodArgumentNotValidException e){ |
| | | // BindingResult bindingResult=exception.getBindingResult(); |
| | | String message=""; |
| | | // String message=bindingResult.getAllErrors().stream().map(DefaultMessageSourceResolvable::getDefaultMessage).collect(Collectors.joining()); |
| | | // for(ObjectError s:e.getAllErrors()){ |
| | | // message+=s.getDefaultMessage(); |
| | | // break; |
| | | // } |
| | | message= String.valueOf(e.getAllErrors().get(0).getDefaultMessage()); |
| | | |
| | | log.info("数据校验错误:{}",message); |
| | | return Result.error(message); |
| | | } |
| | | |
| | | /** |
| | | * 处理sql异常 |
| | | * @param ex |
| | | * @return |
| | | */ |
| | | @ExceptionHandler |
| | | public Result exceptionHandler(SQLIntegrityConstraintViolationException ex){ |
| | | |
| | | //Duplicate entry 'zhangsan' for key 'idx_username' |
| | | 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); |
| | | }else { |
| | | log.error(message,ex); |
| | | return Result.error(MessageConstant.UNKNOWN_ERROR); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |