项目里有几个拦截器,用来做不同功能访问控制,但是当我的页面抛出异常后, 这几个拦截器里的afterCompletion全都执行了,这是怎么回事,拦截器里的代码都一样:
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
if (ex != null) {
log.error("Internal Server Error:" + request.getRequestURI(), ex);
}
}
怎么才能当一个页面发生异常后 只抛出一次异常
------解决方案--------------------
另外,你的说法不准确,异常应该是只抛出过一次,只不过你每个拦截器都根据代码输出了日志而已。
这个应该是不能绕过的。你应该只使用一个拦截器来负责输出异常日志 或者 在自定义的异常中记录下该异常是否已经被输出过。