部分代码:
try{...
  if(area.equals("A") && text.trim().equals("")){
    response.sendRedirect("/investigate/textnull.jsp");
  }
...
}catch(IllegalStateException ex){
   ex.getStackTrace();
}
抛出异常:
root cause :
java.lang.IllegalStateException
 at org.apache.coyote.tomcat4.CoyoteResponseFacade.sendRedirect(CoyoteResponseFacade.java:338)
 at org.apache.jsp.select_jsp._jspService(select_jsp.java:180)
 ...
我对这个异常作了catch,但是还是抓不到它,怎么会这样呢?在线等~~谢谢!

解决方案 »

  1.   

    如果响应已经提交 或者url错误 情况会抛这个异常
      

  2.   

    <%//用户基本资料的信息
    try{
    String sex =  request.getParameter("sex");
    session.setAttribute("sex",sex);
    String age =  request.getParameter("age");
    session.setAttribute("age",age);
    String education =  request.getParameter("education");
    session.setAttribute("education",education);
    String fequency = request.getParameter("fequency");
    session.setAttribute("fequency",fequency);
    String incoming = request.getParameter("incoming");
    session.setAttribute("incoming",incoming);
    String[] favoriteMusic = request.getParameterValues("favoriteMusic");
    session.setAttribute("favoriteMusic",favoriteMusic);
    String area = request.getParameter("area");
    session.setAttribute("area",area);
    String text = request.getParameter("text");//文字信息
    session.setAttribute("text",text);
    String knownetRadio = request.getParameter("knownetRadio");
    session.setAttribute("knownetRadio",knownetRadio);
    String emcee = request.getParameter("emcee");
    session.setAttribute("emcee",emcee);
    String heardRadio = request.getParameter("heardRadio");
    session.setAttribute("heardRadio",heardRadio);//第7题选A 则需填文字信息
      if(area.equals("A") && text.trim().equals("")){
        response.sendRedirect("/investigate/textnull.jsp");
      }
    //8跟10矛盾 作废
      if((knownetRadio.equals("B") && heardRadio.equals("A"))
         || (knownetRadio.equals("B") && heardRadio.equals("B"))){
        response.sendRedirect("/investigate/cancel.jsp");
      }
    //条件跳转到不同调查页面
      if(heardRadio.equals("A")){
        response.sendRedirect("/investigate/investigateA.jsp");
      }
      if(heardRadio.equals("C")){
        response.sendRedirect("/investigate/investigateC.jsp");
      }
      if(heardRadio.equals("B")){
         response.sendRedirect("/investigate/investigateB.jsp");
      }
    }catch(NullPointerException ex){
    %><%=ex.getStackTrace()%>
    <%
       response.sendRedirect("/investigate/error.jsp");
    }catch(IllegalStateException ex){
    %><%=ex.getStackTrace()%>
    <%   

    判断页面跳转部分
      

  3.   

    所有的if语句中加一个return,在response.sendRedirect之后
      

  4.   

    啊!!对喽!顺便问一句:return的作用不是防止它继续条件判断,浪费资源么?为什么不加会出现异常?
      

  5.   

    你使用的是if  if,而不是if else if ,尽管已经sendRedirect了,但是对于当前的servlet,还是会继续往下走,如果再遇到条件相符的,又会send一次,而这个时候response的状态已经改变,因为已经响应一次了