In Web applications, it is generally a best practice to forward to an error page whenever an exception occurs.
The following JSP is a template for one such error page.
error.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Error Page</title>
</head>
<body bgcolor="green">
<div >
<h3>Error Page</h3>
<div >
This error page is only for debugging.
</div>
<div >
<em>Error </em><br />
<% if (exception != null) { %>
<pre><% exception.printStackTrace(new java.io.PrintWriter(out)); %></pre>
<% } else if ((Exception)request.getAttribute("javax.servlet.error.exception") != null) { %>
<pre><% ((Exception)request.getAttribute("javax.servlet.error.exception"))
.printStackTrace(new java.io.PrintWriter(out)); %></pre>
<% } else { %>
<br/>No error details
<% } %>
</div>
<hr>
<div >
<em>HTTP request headers sent from browser</em><br />
<c:forEach var="hdr" items="${header}">
<b>${hdr.key}</b>: ${hdr.value}<br />
</c:forEach>
</div>
<hr>
<div >
<em>HTTP Request attributes</em><br />
<c:forEach items='${requestScope}' var='p'>
<b>${p.key}</b>: ${p.value}<br />
</c:forEach><br />
<b>Context Path</b>: <c:out value="${pageContext.request.pathInfo}" /><br />
<b>Path Translated</b>: <c:out value="${pageContext.request.pathTranslated}" /><br />
<b>Query String</b>: <c:out value="${pageContext.request.queryString}" /><br />
<b>Request URI</b>: <c:out value="${pageContext.request.requestURI}" /><br />
<b>Access Method</b>: <c:out value="${pageContext.request.method}" /><br />
<b>Auth Type</b>: <c:out value="${pageContext.request.authType}" /><br />
</div>
<hr>
<div >
<em>HTTP Session attributes</em><br />
<c:forEach items='${sessionScope}' var='p'>
<b>${p.key}</b>: ${p.value}<br />
</c:forEach>
</div>
</div>
</body>
</html>