我正在编写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没有显示,我要去哪里出错了,谁能解释一下我?
ErrorPage.jsp
问题是您捕获了Exception,因此没有Exception将离开您的doPost()方法。如果Exception匹配项<exception- type>(相同或相同的子类)离开您的doPost()方法,则只会重定向错误页面。
doPost()
Exception
<exception- type>
您应该将Exception捆绑包重新扔进RuntimeException例如:
RuntimeException
} catch(Exception e) { e1.printStackTrace(); throw new RuntimeException(e); }
不幸的是,如果我们谈论的是将军,Exception那么您就不能只抓住它,因为它doPost()被声明为仅抛出ServletExceptionor的实例IOException。允许您不要抓住那些,但java.lang.Exception必须抓住。
ServletException
IOException
java.lang.Exception