不求其他,记录下吧
异常抛出处理如果采用spring拦截处理,不要捕获,否则拦截将不会生效
@ExceptionHandler
@ResponseBody
public Object processGlobalExceptions(HttpServletRequest request,HttpServletResponse httpResponse, HandlerMethod handlerMethod, Exception e ) throws Exception {
if (e instanceof ServiceLogicalException) {
if(RKWebUtil.isAjax(request)){
RKWebUtil.respJSON(httpResponse, ajaxError(e.getMessage()));
return null;
}else{
httpResponse.setHeader("rk_header_msg", java.net.URLEncoder.encode(e.getMessage(), "UTF-8"));
RKWebUtil.redirect(request, httpResponse, RkConst.error_page.error_page_300);
return null;
}
} else if (e instanceof UnauthorizedException||e instanceof UnauthenticatedException) {//未授权
StringBuffer msg=new StringBuffer().append("您没有该操作权限");
if(RKWebUtil.isAjax(request)){
RKWebUtil.respJSON(httpResponse, ajaxError(defaultAuthError+","+msg));
return null;
}else{
RKWebUtil.redirect(request, httpResponse, RkConst.error_page.error_page_401);
return null;
}
}else if(e instanceof Exception){
e.printStackTrace();
if(RKWebUtil.isAjax(request)){
RKWebUtil.respJSON(httpResponse, ajaxError(defaultServerError ));
return null;
}else{
RKWebUtil.redirect(request, httpResponse, RkConst.error_page.error_page_500);
return null;
}
}
return null;
}
采用spring注解对异常进行统一拦截处理
在dao层有个异常抛出
此时,在任何时候都不要对该异常进行捕获,否则拦截将不会生效
由此猜测,异常只要捕获了,后续就不会再次出现
经过几次百度好像确实是这样的,异常上理解又了解一点点