java assert 断言_Java 之 assert (断言)
我们知道C/C++语言中有断言的功能(assert)。在Java SE 1.4版本以后也增加了断言的特性。
断言是为了方便调试程序,并不是发布程序的组成部分。理解这一点是很关键的。
默认情况下,JVM是关闭断言的。因此如果想使用断言调试程序,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableassertions或者-da关闭断言(默认情况,可有可无)。
断言的使用:
断言是通过关键字assert来定义的,一般的,它有两种形式。
1. assert ; 比如 boolean isStudent = false; assert isStudent;
2. assert : ; 比如 boolean isSafe = false; assert isSafe : "Not Safe at all";
光说无用,举几个简单的例子:
第一种形式:
public classAssertionTest {public static voidmain(String[] args) {boolean isSafe = false;assertisSafe;
System.out.println("断言通过!");
}
}
如果是在命令行模式下运行,需要指明开启断言功能。如
java -ea AssertionTest
如果是在IDE下,比如Eclipse,可这样设置: Run as -> Run Configurations -> Arguments -> VM arguments:敲入-ea即可。
输出结果:
Exception in thread "main" java.lang.AssertionError
at AssertionTest.main(AssertionTest.java:8)
第二种形式:
public classAssertionTest {public static voidmain(String[] args) {boolean isSafe = false;assert isSafe : "Not safe at all";
System.out.println("断言通过!");
}
}
输出结果:
Exception in thread "main" java.lang.AssertionError: Not safe at all
at AssertionTest.main(AssertionTest.java:7)
第二种形式和第一种的区别在于后者可以指定错误信息。
陷阱:
断言只是为了用来调试程序,切勿将断言写入业务逻辑中。比如考虑下面这个简单的例子:
public classAssertionTest {public static voidmain(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: 1
at AssertionTest.main(AssertionTest.java:7)
更好的替代品:
JUnit。
java assert 断言_Java 之 assert (断言)相关推荐
- java高级断言_Java之断言
转自博客:http://blog.csdn.net/tanga842428/article/details/52463694 一.语法形式 Java在1.4中新增了一个关键字:assert.在程序开发 ...
- java assert函数_Java Assert 用法简介
在JDK1.4中增加了Assert的新功能,用于开始.调试时期的错误检测,它可以通过-ea 的JVM参数关闭,关闭以后对程序的性能没有任何影响. 最好的教程 请见:http://java.sun.co ...
- php assert or,什么是PHP断言(assert)?该如何使用?
PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE.本文带你重新认识 PHP assert() 函数的神通广大. 本文基于 PHP Version 7.1.28 一.什么是断言 编写程 ...
- python断言assertequal_python中那个断言assert的优化
Python Assert 为何不尽如人意# Python中的断言用起来非常简单,你可以在assert后面跟上任意判断条件,如果断言失败则会抛出异常. Copy >>> assert ...
- python断言assert实例_python接口测试assert断言
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! unittest.texttestrunner(verbosity=2).run ...
- c语言中assert函数,C++ 中assert断言函数的基本用法
在我们的实际开发过程之中,常常会出现一些隐藏得很深的BUG,或者是一些概率性发生的BUG,通常这些BUG在我们调试的过程中不会出现很明显的问题,但是如果我们将其发布,在用户的各种运行环境下,这些程序可 ...
- Java基础の乱弹琴一:assert关键字
一.概述 assert:表示断言 二.语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默 ...
- java assert false_Java陷阱之assert关键字
Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,ass ...
- java高效代码_Java工程师该如何编写高效代码?
在调试 JS 代码时,很多人倾向于使用 alert() 或者 console.log() 方法来输出信息,正如某些 Java 程序员喜欢在调试代码时使用System.out.println() 输出信 ...
- 描述java源程序构成_Java第二章Java程序设计
<Java第二章Java程序设计>由会员分享,可在线阅读,更多相关<Java第二章Java程序设计(140页珍藏版)>请在人人文库网上搜索. 1.第2章 Java基本语法,2. ...
最新文章
- 实践学习:首次项目合作
- HTTP协议与TCP/IP协议的关系
- LeetCode01_二分法专题
- 用图解释RNN运行的部分过程
- 我是一名Cisco爱好 者
- 精确到秒的JQuery日期控件,jquery日历插件,jquery日期插件
- iOS Xcode8的适配
- php事务处理深入学校,php事务处理实例详解
- 在MOSS 2007中查看文档库和站点的大小
- 【2016年第4期】大数据时代的简约计算
- ios上input框上边有阴影
- Java ADF Template程序不能连接ArcGIS Server问题
- 【渝粤教育】国家开放大学2019年春季 7407药物治疗学(本) 参考试题
- c语言模拟题第五套,2013年计算机二级C语言考试全真模拟试题第五套
- [Android] Windows 7下 Android studio 安装 Genymotion 来调试 Android 遇到的问题总结
- gif制作软件 ScreenToGif
- 已非昔日阿蒙!21世纪柴油发动机详解
- python 矩阵和三角函数
- html表格table表头和首列固定
- 解决CSR 8510 A10蓝牙适配器驱动安装不正常问题