我从C(来自JNI / JNA)收到long
值。我想创建一个这个大小的byte[]
数组。
如果此值超过数组的最大大小,我应该抛出哪个异常?
换句话说,我应该抛出以下哪个例外?
long output_len;
...
if(output_len > Integer.MAX_VALUE)
throw new ...();
答案 0 :(得分:2)
如果尝试为数组的大小分配太大的整数,Java本身会抛出OutOfMemeryError
,但是 - 正如 @StephenC 所示 - 你不应该让你的代码抛出这个有点错误。您应该考虑创建自己的Exception
类,并在您决定在output_len > Integer.MAX_VALUE
的情况下抛出异常时在其正文中提供特定的消息。 IllegalArgumentException
似乎也是一个好主意,但值得考虑提供一条特定的消息,说明为什么会抛出此Exception
。