怎么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简称)启动程序,则此语句
-enableassertions
assert cond;
相当于
if (!cond) throw new AssertionError();
如果不使用此选项启动程序,则assert语句将无效。
例如,assert d >= 0 && d <= s.length();在你的问题中发布的,等同于
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被抛出。
-ea
AssertionError
最后,一个鲜为人知的功能assert: 你可以: "Error message"像这样追加:
"Error message"
assert d != null : "d is null";
指定应该抛出什么AssertionError的错误消息。