参考博客来自:Assert断言语法与触发
一.assert关键字是什么?
在C和C++语言中都有assert关键,表示断言。
在Java中,同样也有assert关键字,表示断言,用法和含义都差不多,与之同理的就是if(boolean)判断,如果boolean为false则抛出异常。
在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都 将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。
二.assert的语法
assert关键字语法很简单,有两种用法:
1、assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。
2、assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。
三.如何打开断言,使其生效
1.IDEA中默认assert(断言)是关闭,开启方式如下:
简单来说:就是设置一下jvm
的参数,参数是-enableassertions
或者-ea
(推荐)。
在IDEA的Run==》Edit Configurations 选项卡中:
四. 代码调试生效
1、assert <boolean表达式> 触发assert
public static void main(String[] args) {Integer q = 128;Integer n = 128;System.out.println("q ==n 结果: " + (q==n) );//只有结果为true时,程序才继续执行assert (q == n);System.out.println("程序继续执行了");}
运行结果(前提必须开启断言)如下:
2、assert <boolean表达式> 不触发assert
public static void main(String[] args) {Integer q = 127;Integer n = 127;System.out.println("q ==n 结果: " + (q==n) );//只有结果为true时,程序才继续执行assert (q == n);System.out.println("程序继续执行了");}
运行结果如下:
3、assert <boolean表达式> : <错误信息表达式> 触发assert异常
public static void main(String[] args) {Integer q = 128;Integer n = 128;System.out.println("q ==n 结果: " + (q==n) );//只有结果为true时,程序才继续执行assert (q == n):"超出Integer自动拆装箱范围";System.out.println("程序继续执行了");}
运行结果如下:
4、assert <boolean表达式> : <错误信息表达式> 关闭断言,依然触发assert异常
public static void main(String[] args) {Integer q = 128;Integer n = 128;System.out.println("q ==n 结果: " + (q==n) );//只有结果为true时,程序才继续执行assert (q == n):"Integer自动拆装箱超出范围";System.out.println("程序继续执行了");}
在IDEA的jvm参数中去掉-ea,运行结果如下