# java.lang.NegativeArraySizeException

- **ID:** `java/negative-array-size`
- **Domain:** java
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 87%

## Root Cause

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

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Java 8 | active | — | — |
| Java 11 | active | — | — |
| Java 17 | active | — | — |
| Java 21 | active | — | — |

## Workarounds

1. **Validate the array size before creation: `if (size < 0) throw new IllegalArgumentException("Size must be non-negative: " + size);`.** (95% success)
   ```
   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");`.** (90% success)
   ```
   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.** (85% success)
   ```
   Add a guard clause: `int size = computeSize(); if (size < 0) { size = 0; }` to handle edge cases gracefully.
   ```

## Dead Ends

- **** — The root cause (negative size) is not fixed; retrying will throw the same exception. (95% fail)
- **** — This masks the underlying bug and may lead to incorrect program behavior or data loss. (70% fail)
- **** — If the size is Integer.MIN_VALUE, Math.abs() returns a negative value due to overflow, still causing the exception. (80% fail)
