“ assert”关键字有什么作用?

怎么assert办?例如在函数中:

private static int charAt(String s, int d) {

assert d >= 0 && d <= s.length();

if (d == s.length()) return -1;

return s.charAt(d);

}

回答:

如果使用-enableassertions(或-ea简称)启动程序,则此语句

assert cond;

相当于

if (!cond)

throw new AssertionError();

如果不使用此选项启动程序,则assert语句将无效。

例如,assert d >= 0 && d <= s.length();在你的问题中发布的,等同于

if (!(d >= 0 && d <= s.length()))

throw new AssertionError();

(如果你启动的-enableassertions是。)

Java语言规范assert正式为:14.10。该声明说:

14.10。的assert声明

的断言是一个assert含有一个布尔表达式语句。断言是启用还是禁用。如果启用了断言,则断言的执行将导致对布尔表达式进行求值,并且如果表达式的求值为,则会报告错误false。如果断言被禁用,则断言的执行不起作用。

当“启用或禁用”控制与-ea开关和“报告错误”意味着AssertionError被抛出。

最后,一个鲜为人知的功能assert:

你可以: "Error message"像这样追加:

assert d != null : "d is null";

指定应该抛出什么AssertionError的错误消息。

以上是 “ assert”关键字有什么作用? 的全部内容, 来源链接: utcz.com/qa/407181.html

回到顶部