客户端app

This commit is contained in:
2023-09-24 23:26:20 +08:00
parent 59f7e39791
commit daa9c98598
628 changed files with 87877 additions and 8 deletions

View File

@@ -0,0 +1,44 @@
package org.app.exception;
/**
* @author: Chackylee
* @description:
**/
public class ApplicationException extends RuntimeException {
private int code;
private String error;
public ApplicationException(int code, String message) {
super(message);
this.code = code;
this.error = message;
}
public ApplicationException(ApplicationExceptionEnum exceptionEnum) {
super(exceptionEnum.getError());
this.code = exceptionEnum.getCode();
this.error = exceptionEnum.getError();
}
public int getCode() {
return code;
}
public String getError() {
return error;
}
/**
* avoid the expensive and useless stack trace for api exceptions
* @see Throwable#fillInStackTrace()
*/
@Override
public Throwable fillInStackTrace() {
return this;
}
}

View File

@@ -0,0 +1,8 @@
package org.app.exception;
public interface ApplicationExceptionEnum {
int getCode();
String getError();
}

View File

@@ -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;
}
}