package com.winhc.repal.exception; import com.winhc.common.base.BeanResponse; import com.winhc.common.enums.CodeMsg; import com.winhc.common.exception.CommonException; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.BindException; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; /** * @description: 全局异常捕获 * @author: yujie * @date 2019/4/24 10:07 */ @Slf4j @RestControllerAdvice public class ExceptionHandle { /** * 异常捕获 * @param exception 异常 * @return */ @ExceptionHandler(value = Exception.class) public BeanResponse exceptionHandle(Exception exception) { log.error("系统异常", exception); return BeanResponse.error(CodeMsg.FAILED); } /** * 通用异常捕获 * @param commonException 通用异常 * @return */ @ExceptionHandler(value = CommonException.class) public BeanResponse commonExceptionHandle(CommonException commonException) { //log.info(commonException.getMessage(), commonException); return BeanResponse.error(CodeMsg.FAILED.getCode(), commonException.getMessage()); } /** * 参数校验异常绑定 * @param bindException 绑定异常 * @return */ @ExceptionHandler(value = BindException.class) public BeanResponse bindExceptionHandle(BindException bindException) { StringBuilder msgBuilder = new StringBuilder(); bindException.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getDefaultMessage())); //bindException.getFieldErrors().forEach(error -> msgBuilder.append(error.getField()).append(":") // .append(error.getDefaultMessage()).append("/")); //msgBuilder.deleteCharAt(msgBuilder.lastIndexOf("/")); String errorMsg = msgBuilder.toString(); log.error("参数异常:" + errorMsg); return BeanResponse.error(CodeMsg.VALIDATE_PARAMETER.getCode(), errorMsg); } /** * 参数校验异常绑定 * @param ex 绑定异常 * @return */ @ExceptionHandler(value = MethodArgumentNotValidException.class) public BeanResponse argumentNotValid(MethodArgumentNotValidException ex) { StringBuilder msgBuilder = new StringBuilder(); //ex.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getField()).append(":") //.append(error.getDefaultMessage()).append("/")); ex.getBindingResult().getFieldErrors().forEach(error -> msgBuilder.append(error.getDefaultMessage())); //msgBuilder.deleteCharAt(msgBuilder.lastIndexOf("/")); String errorMsg = msgBuilder.toString(); log.error("参数异常:" + errorMsg); return BeanResponse.error(CodeMsg.VALIDATE_PARAMETER.getCode(), errorMsg); } /** * 参数校验异常绑定 * @param ex 绑定异常 * @return */ @ExceptionHandler(value = {IllegalArgumentException.class}) public BeanResponse argumentException(RuntimeException ex) { log.error("IllegalArgumentException:" + ex.getMessage()); return BeanResponse.error(CodeMsg.VALIDATE_PARAMETER.getCode(), ex.getMessage()); } }