我正在编写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
没有显示,我出错的地方有人可以解释一下吗?
答案 0 :(得分:2)
您正在捕获异常,并且只在内部打印堆栈跟踪,因此错误页面不会生效,删除try-catch或重新抛出它将起作用。此外,您还有一些语法错误。尝试像
这样的东西try{
//Here is all code stuff
throw new Exception();
}catch(Exception e){
e.printStackTrace();
throw new ServletException();
}
答案 1 :(得分:1)
问题是你捕获了Exception,因此没有Exception会离开你的doPost()
方法。如果符合Exception
{相同或其子类的<exception-type>
的{{1}}离开doPost()
方法,则只会重定向错误页面。
您应该重新考虑Exception
中捆绑的RuntimeException
,例如:
} catch(Exception e) {
e1.printStackTrace();
throw new RuntimeException(e);
}
不幸的是,如果我们正在讨论一般Exception
,那么您无法抓住它,因为doPost()
被声明只会抛出ServletException
或{{ 1}}。你被允许不要抓住这些,但必须抓住IOException
。
答案 2 :(得分:1)
您已使用
处理了Exception
中的doPost()
try{
//Here is all code stuff
Throw new Exception();
}catch(Exception e){
e1.printStackTrace();
}
try
和catch
阻止。所以不会调用errorPage.jsp
。对未处理的异常
<error-page>
一个很好的示例教程Exception Handling