Java中常见的运行时异常有哪些

运行时异常由程序逻辑错误引起,无需强制捕获;2. 常见类型包括NullPointerException、ArrayIndexOutOfBoundsExceptio

n、ClassCastException、IllegalArgumentException、ConcurrentModificationException和ArithmeticException;3. 多数因未判空、越界访问、类型转换错误、非法参数、并发修改或除零导致;4. 通过参数校验、空值检查和安全操作可有效预防。

Java中的运行时异常(RuntimeException)是程序在运行期间可能出现的错误,通常由程序逻辑问题引起,不需要强制捕获或声明。以下是常见的运行时异常及其典型场景。

NullPointerException

当尝试访问一个空对象的成员(如方法或属性)时抛出。

常见情况包括:
  • 未初始化的对象直接调用方法
  • 从集合或数据库查询返回null后未判空
  • 自动拆箱时包装类为null

ArrayIndexOutOfBoundsException

访问数组时下标超出有效范围(负数或大于等于数组长度)。

例如:
  • 循环中索引控制错误
  • 对空数组或长度不足的数组进行越界访问

ClassCastException

尝试将对象强制转换为不兼容的类型时发生。

典型场景:
  • 向下转型时父类引用实际指向的不是目标子类
  • 泛型集合中存入类型混乱后取值转换

IllegalArgumentException

传递给方法的参数不符合要求。

比如:
  • 传入负数作为数组长度
  • 使用非法格式的字符串转数字
其子类 NumberFormatException 常见于字符串无法解析为数字类型(如 Integer.parseInt("abc"))。

ConcurrentModificationException

在遍历集合时,如果通过非迭代器方式修改了集合内容,会触发此异常。

多发生在:
  • for-each循环中调用集合的remove()方法
  • 多线程环境下共享集合未同步操作

ArithmeticException

数学运算异常,最常见的是除以零。

注意:
  • 整数除以0会抛出该异常
  • 浮点数除以0返回Infinity,不会抛异常
基本上就这些。这些异常多数源于编码疏忽,合理校验参数、判空、使用安全的集合操作能有效避免。