????????断言(assert)语句一半用于程序不准备通过捕获异常来处理的错误。例如:账号交易时,对于支出的金额为正数(收入+支出=纯收入)或者收入的金额为负数,程序必须立即停止执行,同时发现错误,当正式收益时,就可以避开错误,但仍保留断言语句在程序中,之后再次调试时,可以重新启动断言也可以不断发现新的问题和解决语句。
????????语法格式:
- ?assert booleanExpression;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //? ?求值为booolean类型表达式
- ?assert booleanExpression:messageExpression;? ? ? ? ?//? ?求值为字符串类型的表达式
????????作用条件:
- booleanExpression :
- 值为true时,程序从断言语句处继续执行;
- 值为false时,程序从断言语句处停止执行。
? ? ?2. booleanExpression:messageExpception :
- 值为true时,程序从断言语句处继续执行;
- 值为false时,程序从断言语句处停止执行,并输出messageException表达式的值,提示用户 出现问题。
? ? ? ? 启用/关闭断言语句:
? ? ? ? 当使用Java解析器直接运行应用程序时,默认关闭,通过使用 -ea 命令启用:
? ? ? ? java? -ea? Mainclass? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
例:
package Example7;
/**
* @program: java_basic
* @PackageName: Example7
* @ClassName: Example7_6
*/
public class Example7_6 {
public static void main(String[] args) {
double[] in = {100, -100};
double[] out = {200, -200};
double insum = 0, outsum = 0;
for (double income : in) {
assert income < 0 : "收入不应为负数!";
insum += income;
}
for (double outcome : out) {
assert outcome > 0 : "支出不应为正数!";
outsum += outcome;
}
double sum = insum + outsum;
System.out.println("纯收入为:" + sum);
}
}
非解析器运行结果:
开启断言,解析器运行结果:
|