一。概述
assert:表示断言
二。语法
在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都 将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。
assert关键字语法很简单,有两种用法:
1、assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。
2、assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。
三。例子
下面给出一个例子,通过例子说明其用法:
1 public class AssertFoo { 2 public static void main(String args[]) { 3 //断言1结果为true,则继续往下执行 4 assert true; 5 System.out.println("断言1没有问题,Go!"); 6 System.out.println("\n-----------------\n"); 7 //断言2结果为false,程序终止 8 assert false : "断言失败,此表达式的信息将会在抛出异常的时候输出!"; 9 System.out.println("断言2没有问题,Go!");10 }11 }
可见并没有执行assert,那么在Eclipse下如何设置开启断言呢,看下面的方法:
配置Run Configurations
菜单栏--->Run--->Run Configurations打开配置界面,在VM argument里面输入-ea即可,如下图所示
我在Test类运行配置中加了-ea,然后在Test的main函数中调用A类,在A类中加了断言,断言执行
我在A类运行配置中加了-ea,然后在Test的main函数中调用A类,在A类中加了断言,断言没有执行
断言执行结果:注意看绿框框起来那句话,没有注意的话看看上面的代码;-)
在测试过程中发现sysout和异常抛出的输出顺序飘忽不定详情请看 知乎 非常感谢@Intopass的解答