Reputation: 1324
I am writing the servlet , in case of exception I am redirecting to my customized error page for that i have done like this.
In web.xml
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/WEB-INF/jsp/ErrorPage.jsp</location>
</error-page>
In Servlet,
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try{
//Here is all code stuff
Throw new Exception();
}catch(Exception e){
e1.printStackTrace();
}
But here ErrorPage.jsp
is not displaying , where I am going wrong can anyone explain me?
Upvotes: 3
Views: 5822
Reputation: 418565
The problem is that you catch the Exception and therefore no Exception will leave your doPost()
method. You will only be redirected error page if an Exception
matching the <exception-type>
(either identical or a subclass of it) leaves your doPost()
method.
You should rethrow the Exception
bundled in a RuntimeException
for example:
} catch(Exception e) {
e1.printStackTrace();
throw new RuntimeException(e);
}
Unfortunately if we're talking about a general Exception
you can't just not catch it because doPost()
is declared to only throw instances of ServletException
or IOException
. You are allowed not to catch those, but java.lang.Exception
must be caught.
Upvotes: 1
Reputation: 8207
You have handled the Exception
in your doPost()
using ,
try{
//Here is all code stuff
Throw new Exception();
}catch(Exception e){
e1.printStackTrace();
}
try
and catch
blocks. so the errorPage.jsp
will not be invoked. <error-page>
is invoked for unhandled exceptions
A nice example tutorial Exception Handling
Read for more info Best practice error handling in JSP Servlets
Upvotes: 1
Reputation: 28569
You're catching the exception, and only printing the stacktrace inside, so the error-page doesn't take affect, remove the try-catch or re-throw and it will work. In addition, you have some syntax errors. Try something like
try{
//Here is all code stuff
throw new Exception();
}catch(Exception e){
e.printStackTrace();
throw new ServletException();
}
Upvotes: 2