Java 之 assert (断言)

这篇具有很好参考价值的文章主要介绍了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.AssertionError
	at 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 all
	at 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: 1
	at AssertionTest.main(AssertionTest.java:7)


更好的替代品:

JUnit。文章来源地址https://www.toymoban.com/news/detail-630836.html

到了这里,关于Java 之 assert (断言)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言的标准函数库:断言库assert.h

    C语言断言库assert.h提供了一些用于调试程序时进行断言的函数。如果断言失败,会输出错误消息并终止程序。 assert.h中主要的函数是assert(),其原型为: 参数expression是一个要测试的表达式,如果表达式的值为0(假),assert()会输出错误消息并终止程序。如果表达式的值为非

    2024年02月06日
    浏览(35)
  • 【C/C++】详解 assert() 断言(什么是assert? assert有什么作用?)

    目录 一、前言 二、什么是 assert ?   三、assert 的用法  四、assert 案例解析  五、assert 断言的使用原则 六、共勉        在编写程序过程中,尤其是调试代码时,往往需要一个提醒 代码漏洞/Bug 的小助手,以便于程序员及时修改和完善代码。那么 assert 就可以成为这个

    2024年04月13日
    浏览(35)
  • assert 是一个断言语句

            在 Python 中, assert  是一个断言语句,用于测试代码中的条件是否为真。它的语法如下:         其中, condition  是要测试的条件,如果条件为真( True ),则程序继续执行;如果条件为假( False ),则会触发  AssertionError  异常,并且可以选择性地提供一个

    2024年02月05日
    浏览(37)
  • Python断言(assert)

    Python实用教程_spiritx的博客-CSDN博客 Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系

    2024年02月09日
    浏览(34)
  • SpringBoot单元测试断言 assertions

    断言(assertions)是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法。JUnit 5 内置的断言可以分成如下几个类别: 1、简单断言 2、数组断言 通过 assertArrayEquals 方法来判断两个对象或原始类型的数组是否相等

    2024年02月05日
    浏览(43)
  • [Python] 断言assert与单元测试

    在Python中,断言(assertion)是一种用于检查程序中的条件是否为真的工具。它用于在程序的特定点处验证一些假设,并在条件为假时触发异常如果断言为真,则程序继续执行;如果断言为假,则引发AssertionError异常。 assert语句的语法如下: 其中,condition是一个布尔表达式,如

    2024年02月02日
    浏览(37)
  • Python-assert(断言)的用法

    时机 防御性的编程 运行时对程序逻辑的检测 合约性检查(比如前置条件,后置条件) 程序中的常量 检查文档 目的 与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃,这有利于我们对程序排错,提高程序的健壮性。assert 语句通常用于检查用户的输入

    2024年03月22日
    浏览(41)
  • Unitest单元测试,常用断言方法Assertion

    unittest库提供了很多实用方法来检测程序运行的结果和预期。包括三种类型的方法,每一种都覆盖了典型的类型,比如: 检查相等值、逻辑比较、异常 如果给定的Assertion通过了,那么测试会执行下一行代码。如果给定的assertion没有通过,测试会暂停并且生成错误信息。unitt

    2024年02月05日
    浏览(56)
  • Pytest系列(2) - assert断言详细使用

    与unittest不同,pytest使用的是python自带的assert来进行断言 assert后面可以接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败 想在抛出异常之后输出一些提示信息,执行之后就方便查看是什么原因了 执行结果 pytest 里面

    2024年01月20日
    浏览(46)
  • Pytest系列- assert断言详细使用(4)

    在断言方面,pytest框架比其他类似的框架(比如unittest)更加简洁,易用,我想这是选择pytest作为自动化测试框架之一的原因之一。 pytest的assert断言支持使用python内置的assert表达式。可以理解为pytest的断言就是直接使用python自带的assert。 assert后面可以接一

    2024年02月09日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包