网上看了很多资料但是都没有解决我的问题,最后通过查看异常信息解决问题,这里做相关记录以备后用,怕忘了!也给需要的同志们参考。
首先我们校验如果错误会抛出ConstraintViolationException异常,但是在全局异常处理中如下编写无法捕获:
@ResponseBody @ExceptionHandler(ConstraintViolationException.class) public Map<String,Object> handleCve(ConstraintViolationException ee){ Map<String, Object> resultMap = Maps.newHashMap(); resultMap.put("status",false); resultMap.put("code","00100"); resultMap.put("msg",ExceptionUtils.getRootCauseMessage(ee)); return resultMap; }
出现这个的原因是全局异常首先捕获的是根异常,而ConstraintViolationException不是根异常,通过查看异常输出我这边的根异常是ExecutionException,查看控制台注意要看最前面的异常而不是Cause错误,修改如下就可以捕获异常了:
@ResponseBody @ExceptionHandler(ExecutionException.class) public Map<String,Object> handleCve(HttpServletRequest request, ExecutionException ee){ Throwa