断言:在开发阶段的代码中嵌入,检验某些“假设”是否 成立。若成立,表明程序运行正常,否则表明存在错误。
assertion主要形式:
– assert condition;
– assert condition : message;
eg:
assert (number >= 0) : "number is negative: " + number;
assert x >= 0 : “x is ” + x;
assert后括号中的布尔表达式为false时,会抛出一个AssertionError错误。
括号可省
assert x >= 0 : “x is ” + x;
assertion主要用途:
1.内部不变量,检测变量值。
2.表示不变量,checkRep()每次执行一个方法前后都要运行一次。
3控制流不变量,switch中的defaultcase可用assertion终止。
如果不想被关闭用throw new AssertionError(msg);
4方法前置条件
5方法后置条件
assertion的代价:
1.断言主要用于开发阶段,避免引入 和帮助发现bug,实际运行阶段, 不再使用断言,避免降低性能。使用断言的主要目的是 为了在开发阶段调试程序、尽快避免错误
java默认关闭断言,用-ea打开
2.用在刀刃上检查,不要检测能明显看出成立的表达式。
3.assertion可以被停用,所以不要在assertion中进行操作
4.程序之外的外部错误咱管不了,也管不着
5.用断言处理绝不应当发生的情况