怎么会抛出java.lang.IndexOutOfBoundsException这个异常

本文分析了一个Struts应用中出现的IndexOutOfBoundsException异常原因,并提供了解决方案。异常发生在尝试从空列表中获取元素时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常信息为  
  java.lang.IndexOutOfBoundsException:   Index:   0,   Size:   0  
  at   java.util.ArrayList.RangeCheck(ArrayList.java:547)  
  at   java.util.ArrayList.get(ArrayList.java:322)  
  at   com.yourcompany.struts.action.BMainManagerSetAction.execute(BMainManagerSetAction.java:69)  
   
  ===============================================================  
  jsp中的文件是  
   
  <%@   page   language="java"   contentType="text/html;charset=gbk"%>  
  <%@   include   file="/taglibs.jsp"   %>  
  <html>  
        <body>  
            <html:form   action="bMainManagerSet.do"   >  
                      <table   border=1>  
                          <tr>  
                                <td>总管理员帐户和密码</td>  
                          </tr>  
                          <tr>  
                                <td>   总管理员帐户:</td><td><html:text   property="name"   size="25"   /></td>  
                            </tr>  
                            <tr>    
                  <td>   总管理员密码:</td><td>   <html:password   property="password"   size="25"   /></td>  
                              </tr>  
                              <tr>  
                                    <td><html:submit   value="提交"   /></td>  
                                    <td><html:reset   value="重置"   /></td>  
                                     
                              </tr>  
                      </table>  
            </html:form>  
        </body>  
  </html>  
      =============================================================  
   
   
  action   中的文件是  
  /*  
    *   Generated   by   MyEclipse   Struts  
    *   Template   path:   templates/java/JavaClass.vtl  
    */  
  package   com.yourcompany.struts.action;  
   
  import   java.util.List;  
   
  import   hibernate.HibernateSessionFactory;  
   
  import   javax.servlet.http.HttpServletRequest;  
  import   javax.servlet.http.HttpServletResponse;  
  import   javax.servlet.http.HttpSession;  
   
  import   org.apache.struts.action.Action;  
  import   org.apache.struts.action.ActionForm;  
  import   org.apache.struts.action.ActionForward;  
  import   org.apache.struts.action.ActionMapping;  
  import   org.hibernate.Query;  
  import   org.hibernate.Session;

 import   org.hibernate.Transaction;  
   
  import   testhibernate.TbManager;  
   
  import   com.yourcompany.struts.form.LoginForm;  
   
  /**    
    *   MyEclipse   Struts  
    *   Creation   date:   03-12-2006  
    *    
    *   XDoclet   definition:  
    *   @struts.action   path="/bMainManagerSet"   name="loginForm"   input="/back/foot/mainset/bMainManagerSet.jsp"   scope="request"   validate="true"  
    */  
  public   class   BMainManagerSetAction   extends   Action   {  
  /*  
    *   Generated   Methods  
    */  
   
  /**    
    *   Method   execute  
    *   @param   mapping  
    *   @param   form  
    *   @param   request  
    *   @param   response  
    *   @return   ActionForward  
    */  
  public   ActionForward   execute(ActionMapping   mapping,   ActionForm   form,  
  HttpServletRequest   request,   HttpServletResponse   response)   {  
  LoginForm   loginForm   =   (LoginForm)   form;//   TODO   Auto-generated   method   stub  
  String   name=loginForm.getName();  
  String   password=loginForm.getPassword();  
  Session   session=HibernateSessionFactory.getSession();  
  HttpSession   httpSession=request.getSession();  
  Transaction   tx=null;  
  TbManager   manager=null;  
  try  
  {  
  tx=session.beginTransaction();  
  Query   query=session.createQuery("from   TbManager   t   where   t.name=:mname");  
  query.setString("mname",   name);  
  List   list=query.list();  
  tx.commit();  
   
     
    if(list==null)  
    return   mapping.findForward("bMainManagerSetError");  
    else  
    {  
    manager=(TbManager)list.get(0);  
    if(manager.getPassword().equals(password)&&manager.getMark().equals("总管理员"))  
  return   mapping.findForward("bMainManagerSetResult");  
    else    
    return   mapping.findForward("bMainManagerSetError");  
    }  
  }  
  catch(Exception   ex)  
  {  
  ex.printStackTrace();  
  return   null;  
  }  
  finally  
  {  
  session.close();  

 转载自 - 我的异常网 
  }  
   
   
  }  
  }

------解决方案--------------------------------------------------------
manager=(TbManager)list.get(0);  
  这句出错,如果列表为0,你还要去去第0个元素,就会抛出这个异常

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值