断言
断言语句在调式代码阶段非常有用,断言语句一般用于程序不准备通过捕获异常来处理的错误,例如,当发生某个错误时,要求程序必须立即停止执行。在调试代码阶段让断言语句发挥作用,这样就可以发现一些致命的错误,当程序正式运行时就可以关闭断言语句,单仍把断言语句保留在源代码中,如果以后应用程序有需要调试,可以重新启用断言语句。
断言语句的语法格式
使用关键字assert声明一条断言语句,断言语句有以下两种格式:
assert booleanExpression; assert booleanExpression:messageExpression;
例如,对于断言语句:
assert number >= 0;
如果表达式number>=0的值为true,程序继续执行,否则程序立刻结束执行。
在上述断言语句的语法格式中,boolean型的表达式,messageExpression可以是求值为字符串的表达式。
如果使用
assert booleanExpression;
形式的断言语句,当booleanExpression的值是true时,程序从断言语句处继续执行;值是false时,程序从断言处停止执行。
如果使用
assert booleanExpression:messageExpression;
形式的断言语句,当booleanExpression的值是true时,程序从断言语句处继续执行;值是false时,程序从断言处停止执行,并输出messageExpression表达式的值,提示用户出现了怎样的问题。
启用与关闭断言语句
当使用Java解释器直接运行应用程序时,默认地关闭断言语句,在调试程序时可以使用-ea启用断言语句,例如:
Java –ea mainClass
下面的例子中,使用一个数组存放着某学生5门课程的成绩,程序准备计算学生成绩的总和。在调试程序时使用了断言语句,如果发现成绩有负数,程序立即结束执行。程序调试开启断言语句运行效果如图所示,关闭断言语句运行效果如图所示。
public class Hello { public static void main(String args[]) { int [] score= {-120,98,89,120,99}; int sum=0; for(int number:score) { assert number>=0:"负数不能是成绩"; sum=sum+number; } System.out.println("总成绩:"+sum); } }