java runtime_error ai_generated true

java.lang.NegativeArraySizeException

ID: java/negative-array-size

其他格式: JSON · Markdown 中文 · English
87%修复率
81%置信度
1证据数
2024-06-12首次发现

版本兼容性

版本状态引入弃用备注
Java 8 active
Java 11 active
Java 17 active
Java 21 active

根因分析

当使用负数大小创建数组时抛出,通常是由于整数溢出或数组大小计算错误。

English

Thrown when an array is created with a negative size, usually due to an integer overflow or a bug in array size calculation.

generic

官方文档

https://docs.oracle.com/javase/8/docs/api/java/lang/NegativeArraySizeException.html

解决方案

  1. Validate the array size before creation: `if (size < 0) throw new IllegalArgumentException("Size must be non-negative: " + size);`.
  2. Use long arithmetic for size calculation to prevent integer overflow: `long safeSize = (long) a * b; if (safeSize > Integer.MAX_VALUE) throw new IllegalArgumentException("Size too large");`.
  3. Add a guard clause: `int size = computeSize(); if (size < 0) { size = 0; }` to handle edge cases gracefully.

无效尝试

常见但无效的做法:

  1. 95% 失败

    The root cause (negative size) is not fixed; retrying will throw the same exception.

  2. 70% 失败

    This masks the underlying bug and may lead to incorrect program behavior or data loss.

  3. 80% 失败

    If the size is Integer.MIN_VALUE, Math.abs() returns a negative value due to overflow, still causing the exception.