How to redirect to error page in servlet?

2019-02-25 03:56发布

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?

3条回答
forever°为你锁心
2楼-- · 2019-02-25 04:02

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.

查看更多
劫难
3楼-- · 2019-02-25 04:12

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();
}
查看更多
冷血范
4楼-- · 2019-02-25 04:14

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

查看更多
登录 后发表回答