目前我正在开发一个使用自定义 Servlet 过滤器来捕获所有异常的应用程序:
<filter-mapping>
<filter-name>ExceptionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
和
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
chain.doFilter(request, response);
} catch (Throwable t) {
if (request instanceof HttpServletRequest) {
log.error(((HttpServletRequest) request).getRequestURL());
}
log.error("Exception:", t);
String path = "/error.do";
request.getRequestDispatcher(path).forward(request, response);
}
}
在调查了一段时间后,我发现 SimpleMappingExceptionResolver 是一种处理异常和视图映射的简单方法,并且正如我所见,我不能同时使用这两种方法,但我看不出有任何理由比另一种方法更喜欢一种方法。
我知道使用解析器将不同的错误映射到不同的视图更容易,但我们只使用一个错误视图,所以我更关心这两种解决方案的性能,如果其中一个能够处理更广泛的异常和这样的事情。
在此先感谢各位 Spring 专家