1、参数不满足条件异常类定义
/**
*@description:参数不满足异常处理
*@author
*@date: 2019年8月10日 上午14:17:56
*/
public class PromptException extends RuntimeException {
private static final long serialVersionUID = 1L;
private int code;
private String msg;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
/**
* @param code
* @param msg
*/
public PromptException(int code, String msg) {
super();
this.code = code;
this.msg = msg;
}
}
2、不满业务条件异常类定义
/**
*@description:不满足业务条件异常
*@author
*@date: 2019年8月10日 上午14:17:56
*/
public class BusException extends RuntimeException {
private static final long serialVersionUID = 1L;
private int code;
private String msg;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
/**
* @param code
* @param msg
*/
public BusException(int code, String msg) {
super();
this.code = code;
this.msg = msg;
}
}
3、全局异常处理类
/**
* @Title: GloabException
* @Description:
* @author: liuchuanhong
* @date 2020年9月25日 下午2:56:09
*/
@ControllerAdvice
@ResponseBody
@Slf4j
public class GloabException {
@ExceptionHandler(value = Exception.class)
public String hanleException(Exception e) {
if (e instanceof BusException) {
BusException bus = (BusException) e;
Result res = ResultUtils.failed(bus.getCode(), bus.getMsg());
return JSON.toJSONString(res);
} else if (e instanceof PromptException) {
PromptException bus = (PromptException) e;
Result res = ResultUtils.failed(bus.getCode(), bus.getMsg());
return JSON.toJSONString(res);
} else {
e.printStackTrace();
log.error("异常错误", e.getMessage());
Result res = ResultUtils.failed(ResultEnum.FAIL.getCode(), ResultEnum.FAIL.getDesc());
return JSON.toJSONString(res);
}
}
@ExceptionHandler({ConversionNotSupportedException.class, HttpMessageNotWritableException.class })
public String server500(RuntimeException ex) {
Result res = ResultUtils.failed(ResultEnum.FAIL.getCode(), ResultEnum.FAIL.getDesc());
return JSON.toJSONString(res);
}
// 405错误
@ExceptionHandler({ HttpRequestMethodNotSupportedException.class })
public String request405(HttpRequestMethodNotSupportedException ex) {
Result res = ResultUtils.failed(ResultEnum.FAIL405.getCode(), ResultEnum.FAIL405.getDesc());
return JSON.toJSONString(res);
}
// 400错误
@ExceptionHandler({ MissingServletRequestParameterException.class })
public String requestMissingServletRequest(MissingServletRequestParameterException ex) {
Result res = ResultUtils.failed(ResultEnum.FAIL400.getCode(), ResultEnum.FAIL400.getDesc());
return JSON.toJSONString(res);
}
// 404错误
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public String requestMissingServletRequest(NoHandlerFoundException ex) {
Result res = ResultUtils.failed(ResultEnum.FAIL404.getCode(), ResultEnum.FAIL404.getDesc());
return JSON.toJSONString(res);
}
// Valid参数校验失败返回
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String requestMissingServletRequest(MethodArgumentNotValidException ex) {
Result res = new Result();
BindingResult result = ex.getBindingResult();
List<FieldError> fieldErrors = result.getFieldErrors();
for (FieldError item : fieldErrors) {
res = ResultUtils.failed(ResultEnum.FAIL400.getCode(), item.getDefaultMessage());
break;
}
return JSON.toJSONString(res);
}
}
注:需要配置MVC不拦截404等异常
mvc:
throw-exception-if-no-handler-found: true
resources:
add-mappings: false