【Java】简述断言(assert)的使用以及使用场景

前言

说到 Java 的断言,我第一次听到这个名词的时候,还是在上大学的测试课,老师第一堂课就让我们学习了断言assert,然而因为那个老师是教安卓的,我忘记有没有使用断言框架了,反正那时用着没感觉它是 Java 的东西,后面又很少接触测试的东西,就几乎没有碰过断言assert了。

那么为什么现在我会写关于断言assert的内容呢?

我当然不是为了水文章啦,肯定是为了学习 Java 的冷门小知识!

接下来,我从以下四个方面来介绍assert:

  • 什么是断言
  • 断言的使用场景
  • 如何开启断言
  • 断言如何使用

第一点简单介绍一下断言,后面三个点则是分别从使用场景、断言的开启、断言的使用这三个方面更加详细地介绍断言。

什么是断言

Java 是从 JDK1.4 开始支持断言的,主要用于程序代码的调试或测试阶段,千万不能用在正式环境上。当然啦,JVM是默认关闭断言的,想要开启断言还得向 JVM 输入一个参数-enableassertions才可以启用断言,这个后面再讲。

基本的使用就是assert condition,当 condition 为 true,就继续往下运行;当 condition 为 false,就抛出一个错误,程序停止。

断言的使用场景

断言的使用场景比较局限,大部门都是围绕着测试的。

  1. 限定某段代码中某个变量的合理范围,一旦不符合就抛出错误,需要让程序员再修改代码。表达式结果等同理。
  2. 代替 if?这个不太靠谱,不可能为了一个 if 去让整个程序停止,直接用卫语句if(condition){return null;}最省事。
  3. 断言只能用在开发和测试阶段,多的使用场景我也写不出来了。

切记,千万不能在正式环境中使用,不过一般情况下我们也接触不到公司的正式服务器,我相信公司也不会给正式服务器的 JVM 开启断言,只需要在自己开发自己的项目时注意就好。

自己做项目的时候用起来还是比较方便,写了就留着也没问题,公司的代码就不一定了,像我们公司就会审查提交的代码,但凡写一点奇奇怪怪的东西都会被问为什么要这么做,多一事不如少一事。

如何开启断言

想要使用断言,就必须得先向 JVM 输入一个参数-enableassertions,也可以使用缩写-ea

若是使用命令行就就直接在命令行后面加上就可以了。

命令行

例如:java -ea org.example.simulate.idea.AssertTest

image.png

这里打印出来的是乱码,我也不知道咋解决,-Dfile.encoding=UTF-8貌似识别不了,但 IDEA 上可以,相信也很少人会使用命令行来跑代码吧。

IDEA 编辑器

  1. 打开 Edit Configurations

image.png

  1. 加入参数-ea -Dfile.encoding=UTF-8

image.png

  1. Apply、OK

让我们启动项目。

image.png

打印结果如下。

image.png

eclipse 编辑器应该也很少人用,这里不做演示了,我的电脑也没下 eclipse。

断言如何使用

我们需要在assert关键字后放置一个布尔值(也可以是一个表达式,这个表达式也会变成一个布尔值),当这个布尔值为 true 时,会通过整个断言;当这个布尔值为 false 时,这个断言就会抛出一个错误,这会让整个程序停止

注意断言抛出的是错误,我们是无法使用 try{}catch(){}捕捉的。

image.png

assert有两种语法,一种是直接抛出一个错误,另一种是可以抛出一个错误附带我们写的一个字符串作为提示。

assert condition

直接给一个布尔值,让断言抛出一个没有任何提示的错误。

assert false;

image.png

assert condition : msg

给出一个布尔值和一个提示信息,让断言抛出一个带有提示信息的错误。

assert false : "这里有bug!";

image.png

总结

以上就是断言assert的全部内容了。

断言是一个可以帮助我们在开发和测试中提示我们那部分的代码有问题的一个关键字,我们在使用断言时需要好好地设置一个表达式,这样,断言才能在我们放松警惕时提示我们“你这代码有问题”。

最后我想问个问题:你会在开发中使用断言吗?

  • 21
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员徐小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值