125 lines
4.3 KiB
Java
125 lines
4.3 KiB
Java
|
|
package com.hxkj.common.exception;
|
||
|
|
|
||
|
|
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
|
||
|
|
import com.hxkj.common.core.AjaxResult;
|
||
|
|
import com.hxkj.common.enums.HttpEnum;
|
||
|
|
import lombok.extern.slf4j.Slf4j;
|
||
|
|
import org.springframework.http.HttpStatus;
|
||
|
|
import org.springframework.http.converter.HttpMessageNotReadableException;
|
||
|
|
import org.springframework.validation.BindException;
|
||
|
|
import org.springframework.validation.BindingResult;
|
||
|
|
import org.springframework.web.HttpMediaTypeNotSupportedException;
|
||
|
|
import org.springframework.web.HttpRequestMethodNotSupportedException;
|
||
|
|
import org.springframework.web.bind.MethodArgumentNotValidException;
|
||
|
|
import org.springframework.web.bind.MissingServletRequestParameterException;
|
||
|
|
import org.springframework.web.bind.annotation.*;
|
||
|
|
|
||
|
|
import java.util.Objects;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 全局异常处理
|
||
|
|
*/
|
||
|
|
@Slf4j
|
||
|
|
@ControllerAdvice
|
||
|
|
public class GlobalException {
|
||
|
|
|
||
|
|
// /**
|
||
|
|
// * 处理所有不可知异常
|
||
|
|
// *
|
||
|
|
// * @param e 异常
|
||
|
|
// * @return AjaxResult
|
||
|
|
// */
|
||
|
|
// @ResponseStatus(HttpStatus.OK)
|
||
|
|
// @ExceptionHandler(Throwable.class)
|
||
|
|
// public AjaxResult handleException(Throwable e) {
|
||
|
|
// log.error(ThrowableUtil.getStackTrace(e));
|
||
|
|
// return AjaxResult.failed(HttpEnum.SYSTEM_ERROR.getCode(), HttpEnum.SUCCESS.getMsg());
|
||
|
|
// }
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 拦截表单参数校验FROM
|
||
|
|
*/
|
||
|
|
@ResponseStatus(HttpStatus.OK)
|
||
|
|
@ExceptionHandler(BindException.class)
|
||
|
|
@ResponseBody
|
||
|
|
public AjaxResult handleBindException(BindException e) {
|
||
|
|
BindingResult bindingResult = e.getBindingResult();
|
||
|
|
Integer code = HttpEnum.PARAMS_VALID_ERROR.getCode();
|
||
|
|
String msg = Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage();
|
||
|
|
return AjaxResult.failed(code, msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 拦截路径参数校验PATH
|
||
|
|
*/
|
||
|
|
@ResponseStatus(HttpStatus.OK)
|
||
|
|
@ExceptionHandler(MissingServletRequestParameterException.class)
|
||
|
|
@ResponseBody
|
||
|
|
public AjaxResult handlePathException(MissingServletRequestParameterException e) {
|
||
|
|
Integer code = HttpEnum.PARAMS_VALID_ERROR.getCode();
|
||
|
|
String msg = Objects.requireNonNull(e.getMessage());
|
||
|
|
return AjaxResult.failed(code, msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 拦截JSON参数校验
|
||
|
|
*/
|
||
|
|
@ResponseStatus(HttpStatus.OK)
|
||
|
|
@ExceptionHandler(MethodArgumentNotValidException.class)
|
||
|
|
@ResponseBody
|
||
|
|
public AjaxResult handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
|
||
|
|
BindingResult bindingResult = e.getBindingResult();
|
||
|
|
Integer code = HttpEnum.PARAMS_VALID_ERROR.getCode();
|
||
|
|
String msg = Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage();
|
||
|
|
return AjaxResult.failed(code, msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 拦截参数类型不正确
|
||
|
|
*/
|
||
|
|
@ResponseStatus(HttpStatus.OK)
|
||
|
|
@ExceptionHandler(HttpMessageNotReadableException.class)
|
||
|
|
@ResponseBody
|
||
|
|
public AjaxResult handleHttpMessageNotReadableException(HttpMessageNotReadableException e) {
|
||
|
|
Integer code = HttpEnum.PARAMS_TYPE_ERROR.getCode();
|
||
|
|
String msg = Objects.requireNonNull(e.getMessage());
|
||
|
|
return AjaxResult.failed(code, msg.split(";")[0]);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 拦截请求方法
|
||
|
|
*/
|
||
|
|
@ResponseStatus(HttpStatus.OK)
|
||
|
|
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
||
|
|
@ResponseBody
|
||
|
|
public AjaxResult handleRequestMethodException(HttpRequestMethodNotSupportedException e) {
|
||
|
|
Integer code = HttpEnum.REQUEST_METHOD_ERROR.getCode();
|
||
|
|
String msg = Objects.requireNonNull(e.getMessage());
|
||
|
|
return AjaxResult.failed(code, msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 拦截断言异常
|
||
|
|
*/
|
||
|
|
@ResponseStatus(HttpStatus.OK)
|
||
|
|
@ExceptionHandler(IllegalArgumentException.class)
|
||
|
|
public AjaxResult handleIllegalArgumentException(IllegalArgumentException e) {
|
||
|
|
Integer code = HttpEnum.ASSERT_ARGUMENT_ERROR.getCode();
|
||
|
|
String msg = Objects.requireNonNull(e.getMessage());
|
||
|
|
return AjaxResult.failed(code, msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 拦截MybatisPlus异常
|
||
|
|
*/
|
||
|
|
@ResponseStatus(HttpStatus.OK)
|
||
|
|
@ExceptionHandler(MybatisPlusException.class)
|
||
|
|
@ResponseBody
|
||
|
|
public AjaxResult handleMybatisPlusException(MybatisPlusException e) {
|
||
|
|
Integer code = HttpEnum.ASSERT_MYBATIS_ERROR.getCode();
|
||
|
|
String msg = Objects.requireNonNull(e.getMessage());
|
||
|
|
return AjaxResult.failed(code, msg);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|