我在 web.xml 中定义了一个错误页面:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
在那个错误页面中,我创建了一个自定义标签。这个标签的标签处理程序通过电子邮件向我发送任何错误发生的堆栈跟踪。在大多数情况下,这很有效。
如果在错误发生时输出已经开始发送到客户端,则它不起作用的地方。在这种情况下,我们得到这个:
SEVERE: Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/error.jsp]
java.lang.IllegalStateException
我相信会发生此错误,因为在输出已经开始后我们无法将请求重定向到错误页面。我使用的解决方法是增加特别大的 JSP 页面上的缓冲区大小。但是我正在尝试编写一个可以应用于现有应用程序的通用错误处理程序,并且我不确定通过数百个 JSP 页面确保它们的缓冲区足够大是否可行。
有没有办法在这种情况下仍然允许我的堆栈跟踪电子邮件代码执行,即使我实际上不能向客户端显示错误页面?