FIlterChain异常处理

opt*_*nal 1 servlets exception-handling servlet-filters

我试图了解涉及方法安全性和基于URL的安全性的Spring安全性。基于URL的安全性完全基于Servlet Filters。在某些情况下,Spring安全性会处理由过滤器链引发的异常以完成其工作。

我知道Servlet容器如何执行过滤器,但是我对如何filterChain处理doFilter过滤器链中的方法引发的异常特别感兴趣。

Bal*_*usC 5

我对如何filterChain处理doFilter过滤器链中的方法引发的异常特别感兴趣。

它与他们无关。换句话说,它只是让他们走了起来。它们最终将最终出现在servlet容器的内置异常处理程序中,该处理程序已经知道如何根据中的<error-page>配置进行处理web.xml

但是,您可以通过将FilterChain#doFilter()call放在如下try-catch块中来自己控制它:

try {
    chain.doFilter(request, response) {
} catch (ServletException e) {
    Throwable cause = e.getRootCause(); 
    // ... (handle it)
}
Run Code Online (Sandbox Code Playgroud)

如果链中的其他任何内容(过滤器,servlet,jsp等)抛出未捕获的异常,它将结束。

也可以看看: