今天我正在处理数组,突然遇到了一个抛出意外异常的场景。
如果你看下面的代码,我想它一定抛出了ArrayIndexOutOfBoundsException
,但令人惊讶的是它抛出了IllegalArgumentException
:
import java.util.Arrays;
public class RangeTest {
public static void main(String[] args) {
int[] a = new int[] {0,1,2,3,4,5,6,7,8,9};
int[] b = Arrays.copyOfRange(a, Integer.MIN_VALUE, 10);
// If we'll use Integer.MIN_VALUE+100 instead Integer.MIN_VALUE,
// OutOfMemoryError will be thrown
for (int k = 0; k < b.length; k++)
System.out.print(b[k] + " ");
}
}
有没有人能帮助我,如果我弄错了就告诉我?
发布于 2015-12-29 17:19:28
您发送Integer.MIN_VALUE(-2147483648)作为起始范围。您可能打算发送0
发布于 2015-12-29 17:20:00
您面临的错误是MIN_VALUE = -2147483648 0x80000000,这是负的。或者u设置为0,即Arrays.copyOfRange(a, 0, 10);
。它将允许您复制。
发布于 2015-12-31 14:36:22
java文档和实现之间缺少匹配
正如Eran解释的那样,我们可以看到,由于整数溢出,我们得到了一个IllegalArgumentException异常,而不是ArrayIndexOutOfBoundsException。
https://stackoverflow.com/questions/34507935
复制相似问题