浅浅记录一下:
自定义的AccessDenideEXception处理类拦截不到错误,会被全局管理器先拦截,
两种处理:
第一种就是这样直接在全局处理器上捕捉处理这个异常
@ControllerAdvice public class ExceptionHandle { private final static Logger LOGGER = LoggerFactory.getLogger(ExceptionHandle.class); /** * 判断错误是否是已定义的已知错误,不是则由未知错误代替,同时记录在log中 * @param e * @return */ @ExceptionHandler(value = Exception.class) @ResponseBody public ResultMessage getException(Exception e){ if(e instanceof MyException){ MyException myException = (MyException) e; return ResultUtil.error(myException.getCode(),myException.getMessage()); } LOGGER.error("【系统异常】{}",e); return ResultUtil.error(500,ExceptionEnum.UNKNOW_ERROR.getMsg()); //return ResultUtil.error(500,e.getMessage()); } /** * 权限不足异常捕捉, * 因为全局异常会比自定的提前捕捉到, * 直接在全局异常这里做处理 * @param e * @return */ @ResponseBody @ExceptionHandler(value = AccessDeniedException.class) public ResultMessage handleAccessRE(AccessDeniedException e) { LOGGER.error("权限不足!"); return ResultUtil.error(ResultCode.NO_PERMISSION.getCode(),"没有权限,请联系管理员"); } }
第二种就是捕捉到并抛出,让自定义的AccessDeniedException处理类处理,懒得写第二种,差不多这意思,感谢观看