一个太大的数组的Java异常

时间:2018-01-30 22:19:51

标签: java arrays exception runtime-error out-of-memory

我从C(来自JNI / JNA)收到long值。我想创建一个这个大小的byte[]数组。

如果此值超过数组的最大大小,我应该抛出哪个异常?

换句话说,我应该抛出以下哪个例外?

long output_len;
...
if(output_len > Integer.MAX_VALUE)
    throw new ...();

1 个答案:

答案 0 :(得分:2)

如果尝试为数组的大小分配太大的整数,Java本身会抛出OutOfMemeryError,但是 - 正如 @StephenC 所示 - 你不应该让你的代码抛出这个有点错误。您应该考虑创建自己的Exception类,并在您决定在output_len > Integer.MAX_VALUE的情况下抛出异常时在其正文中提供特定的消息。 IllegalArgumentException似乎也是一个好主意,但值得考虑提供一条特定的消息,说明为什么会抛出此Exception