ArrayIndexOutOfBoundsException after assert statement



我有一个String数组tmpString[] tmp = line.split(",");

然后

我对代码java.lang.ArrayIndexOutOfBoundsException: 3

assert tmp.length == 4;
int r = Integer.parseInt(tmp[3]);   ----error line

和代码java.lang.ArrayIndexOutOfBoundsException: 2

assert tmp.length == 3;
String name = tmp[2];    -----error line

我认为这个错误是不合理的。断言语句正确传递,.length=4没有元素索引的数组如何3?谁能告诉我为什么...

如注释中所述,这里的问题是您没有激活 JVM 选项中的断言

在命令行java MyProgram -ea

对于 Eclipse,请参阅答案。

对于IntelliJ,请参阅答案。

默认情况下,断言处于禁用状态,应使用以下任一命令行开关启用断言:

  • -ea
  • -enableassertions

您可以查看文档以获取更多包和子包更细粒度的激活。

对于参数或变量验证,您应该使用专用的断言库或简单地制作您的断言库。

一个轻量级和流畅的应该是valid4j

//...
Assertive.ensure(tmp.length == 4, "The split result array must have 4 elements: (%d)", tmp.length);

相关内容

  • 没有找到相关文章

最新更新