java.lang.IndexOutBoundsException
1.问题背景
昨天写好的重置密码的接口,与前端联调的过程中,提示“服务异常”,看了下报错信息,提示java.lang.IndexOutBoundsException:Index: 1,Size:1,认识几个单词的人都知道,这不就是数组越界异常了,于是进行debug调试,由此也发现了编写程序时候的逻辑漏洞。
2.问题展示【图片】
拍摄图
3.问题解决 【图片】
debug图一
debug图二
4.解决后的效果
其实,图片展示的问题不太直观,我大致说一下。
该模块是密码修改模块,为提高安全性,禁止最近3次历史密码重复,
由于涉及到代码优化,将最近n次写到了配置文件中,
在进行逻辑判断的时候,没有判断历史密码表当前用户历史密码数量(记作x)与n的关系,
一般来说:
表中当前用户历史密码数量 x >= n , 进行正常的读取最近n条密码进行判断
表中当前用户历史密码数量 x < n , 此时只能读取最近x条
一旦出现了,我只有1条,你却非要读取3条,这样就尴尬了,肯定会异常、会报错。
【OK】