客户端app
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
package org.app.exception;
|
||||
|
||||
import org.app.common.BaseErrorCode;
|
||||
import org.app.common.ResponseVO;
|
||||
import org.hibernate.validator.internal.engine.path.PathImpl;
|
||||
import org.springframework.validation.BindException;
|
||||
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.ResponseBody;
|
||||
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||
|
||||
import javax.validation.ConstraintViolation;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author: Chackylee
|
||||
* @description:
|
||||
**/
|
||||
@RestControllerAdvice
|
||||
public class GlobalExceptionHandler {
|
||||
|
||||
|
||||
@ExceptionHandler(value=Exception.class)
|
||||
@ResponseBody
|
||||
public ResponseVO unknowException(Exception e){
|
||||
e.printStackTrace();
|
||||
ResponseVO resultBean =new ResponseVO();
|
||||
resultBean.setCode(BaseErrorCode.SYSTEM_ERROR.getCode());
|
||||
resultBean.setMsg(BaseErrorCode.SYSTEM_ERROR.getError());
|
||||
/**
|
||||
* 未知异常的话,这里写逻辑,发邮件,发短信都可以、、
|
||||
*/
|
||||
return resultBean;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Validator 参数校验异常处理
|
||||
*
|
||||
* @param ex
|
||||
* @return
|
||||
*/
|
||||
@ExceptionHandler(value = ConstraintViolationException.class)
|
||||
@ResponseBody
|
||||
public Object handleMethodArgumentNotValidException(ConstraintViolationException ex) {
|
||||
|
||||
Set<ConstraintViolation<?>> constraintViolations = ex.getConstraintViolations();
|
||||
ResponseVO resultBean =new ResponseVO();
|
||||
resultBean.setCode(BaseErrorCode.PARAMETER_ERROR.getCode());
|
||||
for (ConstraintViolation<?> constraintViolation : constraintViolations) {
|
||||
PathImpl pathImpl = (PathImpl) constraintViolation.getPropertyPath();
|
||||
// 读取参数字段,constraintViolation.getMessage() 读取验证注解中的message值
|
||||
String paramName = pathImpl.getLeafNode().getName();
|
||||
String message = "参数{".concat(paramName).concat("}").concat(constraintViolation.getMessage());
|
||||
resultBean.setMsg(message);
|
||||
|
||||
return resultBean;
|
||||
}
|
||||
resultBean.setMsg(BaseErrorCode.PARAMETER_ERROR.getError() + ex.getMessage());
|
||||
return resultBean;
|
||||
}
|
||||
|
||||
@ExceptionHandler(ApplicationException.class)
|
||||
@ResponseBody
|
||||
public Object applicationExceptionHandler(ApplicationException e) {
|
||||
// 使用公共的结果类封装返回结果, 这里我指定状态码为
|
||||
ResponseVO resultBean =new ResponseVO();
|
||||
resultBean.setCode(e.getCode());
|
||||
resultBean.setMsg(e.getError());
|
||||
return resultBean;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validator 参数校验异常处理
|
||||
*
|
||||
* @param ex
|
||||
* @return
|
||||
*/
|
||||
@ExceptionHandler(value = BindException.class)
|
||||
@ResponseBody
|
||||
public Object handleException2(BindException ex) {
|
||||
FieldError err = ex.getFieldError();
|
||||
String message = "参数{".concat(err.getField()).concat("}").concat(err.getDefaultMessage());
|
||||
ResponseVO resultBean =new ResponseVO();
|
||||
resultBean.setCode(BaseErrorCode.PARAMETER_ERROR.getCode());
|
||||
resultBean.setMsg(message);
|
||||
return resultBean;
|
||||
|
||||
|
||||
}
|
||||
|
||||
//json格式
|
||||
@ExceptionHandler(value = MethodArgumentNotValidException.class)
|
||||
@ResponseBody
|
||||
public Object handleException1(MethodArgumentNotValidException ex) {
|
||||
StringBuilder errorMsg = new StringBuilder();
|
||||
BindingResult re = ex.getBindingResult();
|
||||
for (ObjectError error : re.getAllErrors()) {
|
||||
errorMsg.append(error.getDefaultMessage()).append(",");
|
||||
}
|
||||
errorMsg.delete(errorMsg.length() - 1, errorMsg.length());
|
||||
|
||||
ResponseVO resultBean =new ResponseVO();
|
||||
resultBean.setCode(BaseErrorCode.PARAMETER_ERROR.getCode());
|
||||
resultBean.setMsg(BaseErrorCode.PARAMETER_ERROR.getError() + " : " + errorMsg.toString());
|
||||
return resultBean;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user