Day01_报错处理(1)

报错:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 15
	at indi.driverschool.iframe.owner.SelOwnerInfoJPanel.queryData(SelOwnerInfoJPanel.java:180)
	at indi.driverschool.iframe.owner.SelOwnerInfoJPanel.<init>(SelOwnerInfoJPanel.java:83)
	at indi.driverschool.iframe.owner.OwnerJPanel.<init>(OwnerJPanel.java:49)
	at indi.driverschool.iframe.MainJFrame.mouseClicked(MainJFrame.java:365)

定位到SelOwnerInfoJPanel.java:180:

data[i][15] = list.get(i).getHappen_time();
ArrayListlist =new ArrayList();
list = OwnerController.selectAll();

查看OwnerController.selectAll():

public static ArrayList selectAll() {
              OwnerDAO ownerInfo = new OwnerDAO();
              return ownerInfo.queryAll();
       }

查看OwnerDAO.queryAll()——>检查返回的数组,但是长度和返回并提取出来的都是16,故这里是没错的,返回求查看出错的位置,查看其有关的上下文:

data = new Object[list.size()][head.length];
        for (int i = 0; i < list.size(); i++) {
               for (int j = 0; j < head.length; j++) {
                       ………
                      data[i][15] = list.get(i).getHappen_time();
                  } 
            }
            JAVA 的 API中:

public class ArrayIndexOutOfBoundsExceptionextends IndexOutOfBoundsException

指用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。

也就是说角标异常!可能的原因是使用的角标大于等于数组的长度或为负数!

检查哪里的长度不对,先检查head(为表头)

head = new String[] { "ID", "车主编号", "车主姓名", "性别", "年龄","身份证号","地址","名下车辆数量 ","名下车牌号","名下教练数量","名下教练姓名","相片编号","操作人编号","备注","信息录入时间"};

发现少了一个字段”联系方式”,增加之后就可以正常运行且不报错了。
粗心大意

猜你喜欢

转载自blog.csdn.net/weixin_39742254/article/details/89259910