文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java 之 assert (断言)

2023-08-31 11:04

关注

我们知道C/C++语言中有断言的功能(assert)。在Java SE 1.4版本以后也增加了断言的特性。

断言是为了方便调试程序,并不是发布程序的组成部分。理解这一点是很关键的。

默认情况下,JVM是关闭断言的。因此如果想使用断言调试程序,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableassertions或者-da关闭断言(默认情况,可有可无)。

断言的使用:

断言是通过关键字assert来定义的,一般的,它有两种形式。

assert ;       比如     boolean isStudent = false; assert isStudent;

assert : ;    比如  boolean isSafe = false;  assert isSafe : "Not Safe at all";

光说无用,举几个简单的例子:

第一种形式:

public class AssertionTest { public static void main(String[] args) {boolean isSafe = false;assert isSafe;System.out.println("断言通过!");}}

如果是在命令行模式下运行,需要指明开启断言功能。如

java -ea AssertionTest


如果是在IDE下,比如Eclipse,可这样设置: Run as -> Run Configurations -> Arguments -> VM arguments:敲入-ea即可。

输出结果:

Exception in thread "main" java.lang.AssertionErrorat AssertionTest.main(AssertionTest.java:8)


 

第二种形式:

public class AssertionTest { public static void main(String[] args) {boolean isSafe = false;assert isSafe : "Not safe at all";System.out.println("断言通过!");}}


输出结果:

Exception in thread "main" java.lang.AssertionError: Not safe at allat AssertionTest.main(AssertionTest.java:7)


第二种形式和第一种的区别在于后者可以指定错误信息。

陷阱:

断言只是为了用来调试程序,切勿将断言写入业务逻辑中。比如考虑下面这个简单的例子:

public class AssertionTest { public static void main(String[] args) {assert ( args.length > 0);System.out.println(args[1]);}}


该句assert (args.length >0)和if(args.length >0)意思相近,但是如果在发布程序的时候(一般都不会开启断言),所以该句会被忽视,因此会导致以下

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1at AssertionTest.main(AssertionTest.java:7)


更好的替代品:

JUnit。

来源地址:https://blog.csdn.net/weixin_39827856/article/details/131293417

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯