防范IndexOutOfBoundsException的关键是访问前显式校验索引合法性:数组和List需检查0≤index<size,字符串需检查0≤index<length,任何可能作索引的值都必须拦截越界。
防范 indexoutofboundsexception 的关键,不是等它抛出来再补救,而是让越界根本没机会发生。重点在访问前拦截非法索引,而不是靠 try-catch 去兜底。
任何可能成为索引的值——无论是用户输入、配置读取、计算结果,还是循环变量——只要用于 array[i]、list.get(i) 或 str.charAt(i),都得先验证合法性。
index >= 0 && index
index >= 0 && index
index >= 0 && index
校验代码要紧贴访问语句,中间不能插入可能改变 size 或 index 的逻辑。比如从请求里拿到 offset 和 size 做分页时,不能只校验 offset,还得确保 offset + size 。
for 循环是最容易写错的地方。常见错误是把终止条件写成 i 或 <code>i ,多走一轮就必然越界。
for (int i = 0; i
for (String s : list),彻底避开索引管理把越界检查逻辑下沉,上层调用就能更干净、更可靠。
立即学习“Java免费学习笔记(深入)”;
safeGet(List<T> list, int index, T defaultValue),内部完成校验并返回默认值list.subList(from, to) 替代手动截取,它本身会校验边界,且异常信息更明确jsonArray.size() 获取真实长度,再取值;不假设字段一定存在或长度足够前端传来的分页参数、配置文件里的索引配置、网络响应中的数组下标——这些都不是“应该没问题”,而是“默认有问题”,必须强制过滤。
offset=999, size=20),方便区分是数据问题还是逻辑缺陷Collections.unmodifiableList 或并发集合类