“断言”关键字有什么作用?
有什么作用?例如,在函数中: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);
}
有什么作用?例如,在函数中: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语言规范:14.10。断言
语句是这样说的:
14.10.
断言
语句
断言是包含布尔表达式的断言
语句。断言已启用或已禁用。如果启用了断言,则执行断言会导致对布尔表达式的计算,如果表达式的计算结果为false
,则会报告错误。如果禁用断言,则断言的执行将没有任何影响。
其中“启用或禁用”由开关控制,“报告错误”表示抛出。-ea
AssertionError
assert
您可以像这样附加:: "Error message"
assert d != null : "d is null";
以指定抛出的断言错误应是什么错误消息。
这篇文章已经重写为一篇文章在这里。
如果不满足该条件,将抛出 an。AssertionError
但是,必须启用断言;否则,表达式不执行任何操作。看:assert
http://java.sun.com/j2se/1.5.0/docs/guide/language/assert.html#enable-disable