哎 这类问题 本来都不打算记录的,但是自己写的时候还是犯了错误,一运行报错了
大致就是list 超出了 ,可能index size 值不一样( Index: 9, Size: 9, Index: 5, Size: 5),但是问题的原因都是类似的 说下处理方法
看下出现的原因 (简单的总结就是你要取的值为空了) 下面说一个案例:
假如现在取 list 里面的值
第一个 item.getList.get(0) xxx 之后就是赋值了
然后再去取第二个值
先判断下第二个是否
if( item.getList.get(1) !=null ){
里面一顿操作,
如果现在接口只返回一个值这个时候就出现java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
因为 item.getList.get(1) 这个里面是空啊 取不到值
所以先判断下item.getList.size >1 看下是否有这个值 然后在取值
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
这类问题出现的原因就是你去取值的时候没有判断这个值是否存在, 不要直接判断不为空就去取值了,这个值不存在,
然后就去判断它是否为空,肯定会出现这个问题。
标题:
java
.
lan
g.
IndexOutOfBoundsException
:
Index
: 3,
Size
: 3
报错原因:数组越界异常,简而言之:数组里只有三个元素,但是你直接引用了数组中不存在的第四个元素。
解决方法:
直接引用不存在的元素,即认为List中有三个元素,故可以取get(3)。如下图:
这种是因为不了解数组下标的原因导致的,数组下标从0开始,所以上边例子只有三个元素的数组只能取get(0)和get(1)以及get(2)
这个错误是由于在一个空的ArrayList中尝试访问索引0导致的。具体来说,在DisasterWeatherSMSReminderCustomersSchedule类的第376行,尝试访问一个空的ArrayList,导致
IndexOutOfBoundsException
异常。需要检查代码中是否正确初始化了ArrayList,或者在访问ArrayList之前添加一个空值检查。
这个错误的意思是没有获取到这个位置的元素。
java
.
lan
g.
IndexOutOfBoundsException
:
Index
: 0,
Size
: 0。
出现时一般后面都会跟
Index
: xx,
Size
: xx 。
具体xx不一定,出现这个错误的原因有两种:
一:索引超出边界造成的异常,
二:就是有一个数组想要去取
size
位置上的数据,发现没有值可以取得。
所以,归根到底是要取的值是...
java
.
lan
g.
Index
OutBoundsException1.问题背景2.问题展示【图片】拍摄图3.问题解决 【图片】debug图一debug图二4.解决后的效果
1.问题背景
昨天写好的重置密码的接口,与前端联调的过程中,提示“服务异常”,看了下报错信息,提示
java
.
lan
g.
Index
OutBoundsException:
Index
: 1,
Size
:1,认识几个单词的人都知道,这不就是数组越界异常了,于是进行debug调试,由此也发现了编写程序时候的逻辑漏洞。
2.问题展示【图片】