Just declare an <error-page>
in web.xml
wherein you can specify the page which should be displayed on a certain Throwable
(or any of its subclasses) or a HTTP status code. E.g.
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
which will display the error page on any subclass of the java.lang.Exception
, but thus not java.lang.Throwable
or java.lang.Error
. This way you can have your own error page for any kind of Throwable
. E.g. java.sql.SQLException
, java.io.IOException
and so on.
Or,
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
which whill display the error page on a HTTP 500 error, but you can also specify another ones for 404 (Page Not Found), 403 (Forbidden), etcetera.
If you declare <% page isErrorPage="true" %>
in top of error.jsp
, then you have access to the thrown Exception
(and thus also all of its getters) by ${exception}
in EL.
<p>Message: ${exception.message}
Also see the Sun Java EE 5 tutorial on the subject.