package com.panzhihua.common.exceptions;
|
|
import java.util.List;
|
|
import org.springframework.core.Ordered;
|
import org.springframework.core.annotation.Order;
|
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.FieldError;
|
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 com.panzhihua.common.constants.HttpStatus;
|
import com.panzhihua.common.model.vos.R;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
/**
|
* @program: springcloud_k8s_panzhihuazhihuishequ
|
* @description: 全局异常捕获
|
* @author: huang.hongfa weixin hhf9596 qq 959656820
|
* @create: 2020-11-25 14:36
|
**/
|
@Slf4j
|
@RestControllerAdvice
|
@Order(Ordered.HIGHEST_PRECEDENCE)
|
public class GlobalExceptionCapture {
|
/**
|
* 拦截捕捉自定义异常 TokenException.class
|
*
|
* @param ex
|
* token 异常
|
* @return R 401
|
*/
|
@ExceptionHandler(value = TokenException.class)
|
public R myErrorHandlerTokenException(TokenException ex) {
|
return R.fail(ex.getCode(), ex.getMsg());
|
}
|
|
/**
|
* 拦截捕捉自定义异常 PartyBuildingMemberException
|
*
|
* @param ex
|
* 党建异常
|
* @return 异常信息
|
*/
|
@ExceptionHandler(value = PartyBuildingMemberException.class)
|
public R PartyBuildingMemberException(PartyBuildingMemberException ex) {
|
return R.fail(ex.getMsg());
|
}
|
|
/**
|
* 拦截捕捉自定义异常 UnAuthenticationException.class
|
*
|
* @param ex
|
* 认证 异常
|
* @return R 401
|
*/
|
@ExceptionHandler(value = UnAuthenticationException.class)
|
public R myErrorHandlerUnAuthenticationException(UnAuthenticationException ex) {
|
return R.fail(ex.getCode(), "没有登录");
|
}
|
|
/**
|
* 拦截捕捉自定义异常 UnAuthorizationException.class
|
*
|
* @param ex
|
* 权限 异常
|
* @return R 403
|
*/
|
@ExceptionHandler(value = UnAuthorizationException.class)
|
public R myErrorHandlerUnAuthorizationException(UnAuthenticationException ex) {
|
return R.fail(ex.getCode(), "没有访问权限");
|
}
|
|
/**
|
*
|
* @param ex
|
* 数据库异常
|
* @return
|
*/
|
@ExceptionHandler(value = java.sql.SQLSyntaxErrorException.class)
|
public R sqlSyntaxExcetption(Exception ex) {
|
log.error("数据库异常【{}】", ex.getMessage());
|
return R.fail("sql语法错误");
|
}
|
|
/**
|
*
|
* @param ex
|
* 数据库异常
|
* @return
|
*/
|
@ExceptionHandler(value = java.sql.SQLException.class)
|
public R sqlException(Exception ex) {
|
log.error("数据库异常【{}】", ex.getMessage());
|
return R.fail("sql错误");
|
}
|
|
/**
|
*
|
* @param ex
|
* 服务层业务异常
|
* @return
|
*/
|
@ExceptionHandler(value = ServiceException.class)
|
public R serviceException(ServiceException ex) {
|
log.error("服务层业务异常【{}】", ex.getMessage());
|
return R.fail(ex.getMessage());
|
}
|
|
/**
|
* 校验异常
|
*
|
* @param ex
|
* valid
|
* @return 返回json
|
*/
|
@ExceptionHandler(value = MethodArgumentNotValidException.class)
|
public R methodArgumentNotValidException(MethodArgumentNotValidException ex) {
|
BindingResult result = ex.getBindingResult();
|
StringBuilder errorMessage = new StringBuilder();
|
if (result.hasErrors()) {
|
List<ObjectError> errors = result.getAllErrors();
|
errors.forEach(p -> {
|
FieldError fieldError = (FieldError)p;
|
errorMessage.append(fieldError.getDefaultMessage());
|
errorMessage.append(" ");
|
});
|
}
|
return R.fail(HttpStatus.BAD_REQUEST, errorMessage.toString());
|
}
|
|
// /**
|
// * 全局异常捕捉处理
|
// * @param ex 所有运行时异常
|
// * @return R 500
|
// */
|
// @ExceptionHandler(value = Exception.class)
|
// public R errorHandler(Exception ex) {
|
// log.error("捕捉到全局异常【{}】",ex.getMessage());
|
// return R.fail("接口请求失败");
|
// }
|
}
|