package com.bjshenpu.spcloud.dajia.common.config; import cn.hutool.core.exceptions.ValidateException; import com.bjshenpu.common.model.dto.BaseResult; import com.bjshenpu.common.model.dto.Result; import com.bjshenpu.common.model.exception.BaseException; import com.bjshenpu.common.model.exception.ServerException; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindingResult; import org.springframework.validation.ObjectError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import javax.validation.ValidationException; import java.util.Iterator; import java.util.Set; /** * @author zlt * @date 2018/12/22 */ @Slf4j @RestControllerAdvice public class ExceptionAdvice { @ExceptionHandler({MethodArgumentNotValidException.class}) public Result handleMAException(MethodArgumentNotValidException e) { String validatorMessage = ""; BindingResult bindingResult = e.getBindingResult(); ObjectError error; if (bindingResult.hasErrors()) { for (Iterator var5 = bindingResult.getAllErrors().iterator(); var5.hasNext(); validatorMessage = error.getDefaultMessage()) { error = (ObjectError) var5.next(); } } log.warn(e.getMessage()); return Result.failed(validatorMessage); } @ExceptionHandler({ConstraintViolationException.class}) public Result handleCVException(ValidationException e) { BaseResult result = new BaseResult(); String validatorMessage = ""; if (e instanceof ConstraintViolationException) { ConstraintViolationException exs = (ConstraintViolationException) e; Set<ConstraintViolation<?>> constraintViolations = exs.getConstraintViolations(); Iterator var6 = constraintViolations.iterator(); if (var6.hasNext()) { ConstraintViolation<?> item = (ConstraintViolation) var6.next(); validatorMessage = item.getMessage(); } } return Result.failed(validatorMessage); } @ExceptionHandler({RuntimeException.class}) public Result handleException(RuntimeException e) { log.error(e.getMessage(), e); return Result.failed("网络异常,请稍后再试!"); } @ExceptionHandler({ServerException.class}) public Result handleAeException(ServerException e) { return Result.failed(e.getCode(), e.getMsg()); } /** * 处理自定义异常 */ @ExceptionHandler(BaseException.class) public Result handleRRException(BaseException e) { Result r = new Result(); r.setCode(String.valueOf(e.getCode())); r.setMsg(e.getMessage()); log.error(e.getMessage(), e); return r; } @ExceptionHandler(Exception.class) public Result handleException(Exception e) { log.error(e.getMessage(), e); return Result.failed("系统异常,请稍后再试"); } @ExceptionHandler({ValidateException.class}) public Result handleValidateException(ValidateException e) { return Result.failed(e.getMessage()); } }
单个微服务的springMVC的统一异常处理套路
猜你喜欢
转载自blog.csdn.net/yz18931904/article/details/130729813
今日推荐
周排行