package com.xcong.excoin.configurations; import com.xcong.excoin.common.exception.GlobalException; import com.xcong.excoin.common.response.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DuplicateKeyException; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.validation.ValidationException; /** * @author wzy * @date 2020-05-08 15:40 **/ @RestControllerAdvice @Slf4j public class GlobalExceptionHandler { /** * 方法参数校验 * * @param e * @return */ @ExceptionHandler(value = {MethodArgumentNotValidException.class}) public Result handleException(MethodArgumentNotValidException e) { log.error(e.getMessage()); FieldError fieldError = e.getBindingResult().getFieldError(); if (fieldError != null) { return Result.fail(fieldError.getDefaultMessage()); } else { return Result.fail("参数校验失败"); } } @ExceptionHandler(value = {ValidationException.class}) public Result handleException(ValidationException e) { log.error(e.getMessage(), e); return null; } @ExceptionHandler(value = {DuplicateKeyException.class}) public Result handleException(DuplicateKeyException e) { log.error(e.getMessage(), e); return null; } /** * spring security 账户密码验证异常 * * @param e * @return */ @ExceptionHandler(value = { BadCredentialsException.class }) public Result handleException(BadCredentialsException e) { log.error(e.getMessage(), e); return Result.fail("用户名或密码错误"); } @ExceptionHandler(value = {GlobalException.class}) public Result handleException(GlobalException e) { return Result.fail(e.getMessage()); } @ExceptionHandler(value = {Exception.class}) public Result handleException(Exception e) { log.error(e.getMessage(), e); return Result.fail("系统异常"); } }