Java 之 assert (断言)
我们知道C/C++语言中有断言的功能(assert)。在Java SE 1.4版本以后也增加了断言的特性。
断言是为了方便调试程序,并不是发布程序的组成部分。理解这一点是很关键的。
默认情况下,JVM是关闭断言的。因此如果想使用断言调试程序,需要手动打开断言功能。在命令行模式下运行Java程序时可增加参数-enableassertions或者-ea打开断言。可通过-disableassertions或者-da关闭断言(默认情况,可有可无)。
断言的使用:
断言是通过关键字assert来定义的,一般的,它有两种形式。
1. assert <bool expression>; 比如 boolean isStudent = false; assert isStudent;
2. assert <bool expression> : <message>; 比如 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。
Java 之 assert (断言)相关推荐
- java junit Assert断言用法示例: Assert.assertEquals(期望的结果,运算的结果)
计算demo /*** 计算器类*/ public class Calculator {/*** 加法* @param a* @param b* @return*/public int add (in ...
- 理解和正确使用Java中的断言(assert)
理解和正确使用Java中的断言(assert) 一.语法形式: Java2在1.4中新增了一个关键字:assert.在程序开发过程中使用它创建一个断言(assertion),它的 语法形式有如 ...
- java assert false_深入剖析Java中的断言assert
Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,ass ...
- java中的Assert断言式表达中的assertEquals用法
1. Assert 断言式的表达方式的用法: List<User> userList = userMapper.selectList(null);Assert.assertEquals(A ...
- java assert函数_assert函数-论java中assert函数和Python、PHP、C语言assert函数
assert函数广泛在java.Python.PHP.C语言中存在,都有统一的意义,用业界语言称之为"断言".最初的出发点都是为了方便调试而设计的,但是最近越来越多的开发者不分测试 ...
- Assert断言的使用
1.Junit测试类使用 2.Assert断言的使用 文章目录 一.简介 1.判断值是否相同(assertEquals) 2.判断值是否不同(assertNotEquals) 3.用Boolean判断 ...
- Python assert断言函数及用法
Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...
- python assert 断言的作用
python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助.本文主要是 ...
- Python assert 断言
assert断言语句用来声明某个条件是真的,其作用是测试一个条件(condition)是否成立,如果不成立,则抛出异常. assert一般用法: assert condition 如果conditio ...
- Python assert 断言函数
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单.在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件 ...
最新文章
- [JAVA EE]Spring Boot 控制层:参数传递方法
- 学习ui设计的流程是什么
- linux守护实例有什么用,linux中的信号及进程守护的应用实例分享
- Science 好文:强化学习之后,机器人学习瓶颈如何突破?
- abbyy在使用时提示更改分辨率如何处理
- SQL(Oracle)日常使用与不常使用函数的汇总
- spring smtp_使用Spring使用Java发送电子邮件– GMail SMTP服务器示例
- 带头结点头部插入创建链表
- echarts 词云_python Flask+爬虫制作股票查询、历史数据、股评词云网页
- linux 磁盘uuid获取
- 随笔编号-03 基本类型相互转换集合
- 经验原石_行家第一次入手翡翠原石并不是为了一夜暴富
- 为什么日本人晚上那么晚去居酒屋吃炸鸡喝啤酒,但街上却鲜有胖子?
- java为什么安装怎么慢_Java JDK下载为什么慢? 国内下载站来解决
- C语言:编写一个程序,从键盘读入一个矩形的两个边的值(整数),求矩形面积
- 6. 卷2(进程间通信)---System V 消息队列
- a59s刷机包卡刷 oppo_OPPOA59S刷机包_线刷包_救砖包_官方ROM包_固件包下载- 线刷宝ROM中心...
- 微信修改基本配置信息
- 2022年分享一些好用的内网穿透软件
- php找零页面,JS实现找零张数最小
热门文章
- unity获取电磁笔压感_一种智能终端电磁压感笔的制作方法
- 登录onedrive显示无法连接服务器,Win10打不开OneDrive提示“连接到onedrive时出现问题”解决方法...
- 剑指offer学习--实现单例模式
- java PDF 生成方案
- Deepdive 教程--数据准备
- 创建线程的三种方式、线程运行原理、常见方法、线程状态
- Java实现的信号灯
- CASIA -HWDB2.0-2.2和OLHWDB2.0-2.2数据集解析
- 一如昨日的时光,一如昨日的酒--
- CardView属性app:cardUseCompatPadding和app:cardPreventCornerOverlap