arrayindexoutofboundsexception 是运行时异常,因数组下标小于 0 或大于等于长度引发;需手动校验 index >= 0 && index
Java 中
ArrayIndexOutOfBoundsException是运行时异常,表示数组访问时下标超出了合法范围(小于 0 或大于等于数组长度)。它无法被编译器检查,但可以通过预防和合理处理来避免程序崩溃。提前校验数组下标合法性
最直接有效的方式是在访问数组前手动判断下标是否在有效范围内:
- 检查
index >= 0 && index- 对用户输入、循环变量、计算结果等所有可能越界的来源都做校验
- 例如:int[] arr = {1, 2, 3}; int i = 5; if (i >= 0 && i
用增强 for 循环或迭代器替代传统 for 索引访问
当不需要索引本身,只遍历元素时,避免手动管理下标能彻底消除越界风险:
- 用
for (int x : arr)替代for (int i = 0; i- 集合类优先使用
iterator()或forEach()方法- 注意:这种方式不适用于需要修改数组/集合或依赖索引逻辑的场景
捕获异常仅用于兜底,不推荐作为主要控制逻辑
虽然可以
try-catch,但该异常属于编程错误,不是正常业务流中的可预期状况:
- 捕获后应记录日志、给出明确提示,而不是静默吞掉或盲目重试
- 不建议用
catch来代替边界检查——性能差且掩盖了代码缺陷- 示例:try { System.out.println(arr[10]); } catch (ArrayIndexOutOfBoundsException e) { logger.error("数组访问越界,索引=10,长度="+arr.length, e); }
借助工具和编码习惯降低出错概率
从开发源头减少人为疏漏:
- 使用 IDE 的实时检查(如 IntelliJ 提示“Array access can produce 'ArrayIndexOutOfBoundsException'”)
- 单元测试覆盖边界值:下标为
-1、0、array.length - 1、array.length- 方法参数中对数组和索引做断言(如
Objects.checkIndex(i, arr.length),Java 19+ 引入)- 封装数组操作为工具方法,内部统一做校验,对外提供安全接口
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南












