![名师讲坛:Java开发实战经典(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/824/26793824/b_26793824.jpg)
上QQ阅读APP看书,第一时间看更新
7.5 断言(assert)
在JDK 1.4之后,Java中增加了断言的功能。断言就是肯定某一个结果的返回值是正确的,如果最终此结果的返回值是错误的,则通过断言检查肯定会提示错误信息。断言的定义格式如下。
【格式7-3 断言】
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P233_124717.jpg?sign=1739282309-LowvSuul35rzjKtt945uJr7DhsV7NpfI-0-afc17cda932bb97a675e0ce72cac1a87)
如果上面的boolean表达式的结果为true,则什么错误信息都不会提示,如果为false,则会提示错误信息;如果没有声明详细信息的描述,则系统会使用默认的错误信息提示方式。
【例7.16】下面的程序使用了断言
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P233_124718.jpg?sign=1739282309-3Iexo3xlkR8vkBARjymSm61pV3c3QlWO-0-8688e253042f3375a8d93d2b4b151f04)
上面的程序中,数组x的长度是不可能为0的,所以,此处的断言结果是错误的,但此时运行程序并不会得到任何的结果,这是因为Java在设计此关键字的时候,考虑到了系统的应用。为了防止某些用户使用assert作为关键字,所以在程序正常运行时断言并不会起任何的作用,如果要想让断言起作用,则在使用Java运行时应该加入以下的参数:
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P233_124719.jpg?sign=1739282309-d0gibnymWiRGO6zu8f4kmj3LE1nIczbD-0-c3f58724c2c0c20c4e89b2c60207e29b)
下面使用以上的参数运行程序,运行程序格式如下:
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P233_124720.jpg?sign=1739282309-VoOAWouUjnGVoakJmbmshi8Fik1i4AsK-0-bcc62998a70bccc81eebfe5162ecc484)
程序运行时出现以下错误:
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P233_124722.jpg?sign=1739282309-BiNenXKsWnZvpjG7ZVhkBt4WU2u6nsq9-0-668a34510b5d9168a86a6d2e8ce40e9a)
上面出现的是断言错误,因为数组x的长度不可能是0,但此时的信息是系统默认的错误信息,如果要想显示自己的错误信息,可以使用另外一种断言声明格式。
【例7.17】Test代码修改如下:
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P234_124724.jpg?sign=1739282309-Hf4wnF20XKeELmp3d72QGjyxOYPRZ11W-0-4abb6ce3cb2d55bd2902617c1b944484)
再次验证断言,出现以下的信息:
![](https://epubservercos.yuewen.com/DE8B7B/15253389304122106/epubprivate/OEBPS/Images/Figure-P234_124725.jpg?sign=1739282309-HJIPyD1S2rqFLCUbE5jfLvXhYP9iaMe1-0-89a050d3340a9e1f5c4e380a91dd1ad8)
上面的代码就是将自定义的错误信息进行输出,当然,如果此时断言的结果是正确的,验证肯定不会有任何的问题。
注意
断言的使用。
(1)虽然断言返回的是boolean值,但是其并不能作为条件判断语句出现。
(2)断言虽然有检查运行结果的功能,但是一般在开发中并不提倡使用断言。