一尘不染

如何在servlet中重定向到错误页面?

jsp

我正在编写servlet,如果发生异常,我将重定向到我的自定义错误页面,因为这样做是这样的。

在web.xml中

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

在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();

}

但是这里ErrorPage.jsp没有显示,我要去哪里出错了,谁能解释一下我?


阅读 233

收藏
2020-06-08

共1个答案

一尘不染

问题是您捕获了Exception,因此没有Exception将离开您的doPost()方法。如果Exception匹配项<exception- type>(相同或相同的子类)离开您的doPost()方法,则只会重定向错误页面。

您应该将Exception捆绑包重新扔进RuntimeException例如:

} catch(Exception e) {
    e1.printStackTrace();
    throw new RuntimeException(e);
}

不幸的是,如果我们谈论的是将军,Exception那么您就不能只抓住它,因为它doPost()被声明为仅抛出ServletExceptionor的实例IOException。允许您不要抓住那些,但java.lang.Exception必须抓住。

2020-06-08