JSP: How can I still get the code on my error page to run, even if I can't display it?

Posted by Josh Hinman on Stack Overflow See other posts from Stack Overflow or by Josh Hinman
Published on 2008-10-16T23:37:05Z Indexed on 2010/03/20 5:41 UTC
Read the original article Hit count: 287

Filed under:
|
|

I've defined an error-page in my web.xml:

 <error-page>
   <exception-type>java.lang.Exception</exception-type>
   <location>/error.jsp</location>
 </error-page>

In that error page, I have a custom tag that I created. The tag handler for this tag e-mails me the stacktrace of whatever error occurred. For the most part this works great.

Where it doesn't work great is if the output has already begun being sent to the client at the time the error occurs. In that case, we get this:

SEVERE: Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/error.jsp]
 java.lang.IllegalStateException

I believe this error happens because we can't redirect a request to the error page after output has already started. The work-around I've used is to increase the buffer size on particularly large JSP pages. But I'm trying to write a generic error handler that I can apply to existing applications, and I'm not sure it's feasible to go through hundreds of JSP pages making sure their buffers are big enough.

Is there a way to still allow my stack trace e-mail code to execute in this case, even if I can't actually display the error page to the client?

© Stack Overflow or respective owner

Related posts about jsp

Related posts about error-handling