如果使用
-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的错误消息。



