断言语句

时间:2018-06-06 09:51:53

标签: java string assert

我有一个由String

获取的tmp数组String[] 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

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

2 个答案:

答案 0 :(得分:3)

如评论中所述,此处的问题是您没有激活JVM选项中的断言

在命令行cordova platform remove android cordova platform add android

对于Eclipse,请参阅 this 回答。

对于IntelliJ,请参阅 this 回答。

答案 1 :(得分:2)

默认情况下,断言被禁用,您应该使用以下任一命令行开关启用它们:

  • -ea
  • -enableassertions

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

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

轻量级且流畅的应该是valid4j

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