首页 > 编程笔记 > Java笔记

Java断言用法详解

断言(assert)是 Java 中的一条语句,一种在程序中的逻辑(如一个结果为真或假的逻辑判断式),目的是验证软件开发者预期的结果——当程序执行到断言的位置时,对应的断言应该为真。若断言不为真,则程序中止执行,并给出错误信息。

断言可以用来测试开发者对该程序的假设,即程序执行到某行后,其结果一定是预期的。如果失败,那么 Java 虚拟机将抛出一个名为 AssertionError 的异常。

断言为开发者提供了一种有效的方法来检测和纠正编程错误。

断言语句一般用于程序不通过捕获异常来处理的错误。例如,在进行账号交易时,程序设置支出的金额应为负数,收入的金额应为正数,如果发现支出的金额为正数或收入的金额为负数,那么程序必须立即停止执行,同时发现错误。当收益为正数时,就可以避开错误,但仍保留程序中的断言语句,之后再次调试时,可以重新启动断言,也可以不断发现程序中的新的问题和解决语句。

Java断言的语法

要添加断言,只需要使用关键字 assert 并为其赋予布尔条件即可。使用断言的语法格式有以下两种。

第一种语法格式如下:
assert [boolean 表达式]
若 [boolean表达式] 为 true,则程序继续执行;若为 false,则程序抛出 AssertionError,并终止执行。

第二种语法格式如下:
assert [boolean 表达式:错误表达式(日志)]
若 [boolean表达式] 为 true,则程序继续执行;若为 false,则程序抛出 java.lang.AssertionError,并输出[错误信息]。

【实例】断言的应用。
package chapter6;

import java.util.Scanner;

public class Example6_5 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入你的年龄:");
        int value = scanner.nextInt();
        assert value >= 18 : "不合法";
        System.out.println("输入值为:" + value);
    }
}
运行结果为:

请输入你的年龄:10
输入值为:10

可以看到,上述代码中的断言并未生效,这是因为 IDEA 中的断言默认是关闭的。想要使用断言,需要手动开启。

在IDEA中开启断言

在 IDEA 中开启断言的步骤如下。
1) 打开 IDEA 界面,选择“Run”→“Edit Configurations”命令,如下图所示。


图 1 IDEA界面

2) 打开“Run/Debug Configurations”对话框,如下图所示。


图 2 “Run/Debug Configurations”对话框

3) 单击图 2 所示的“Modify options”下拉按钮,选择“Add VM options”命令,如下图所示。


图 3 选择“Add VM options”命令

4) 打开图 4 所示的界面,并在①处的文本框中输入“-ea”或“-enableassertions”,设置完成后先单击右下角的“Apply”按钮,再单击“OK”按钮即可。


图 4 Add VM options界面

简单来说,在 IDEA 中开启断言就是设置 Java 虚拟机的参数(参数是-ea或-enableassertions)。

再次运行 Example6_5,可以看到,断言机制已生效,运行结果如下图所示。


图 5 运行结果

推荐阅读