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

article/2025/10/26 3:35:27

前言

说到 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的全部内容了。

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

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


http://chatgpt.dhexx.cn/article/UFNWQHPq.shtml

相关文章

Java: 断言(assert)

断言(assert)语句一般用于程序不准备通过捕获异常来处理的错误。例如:账号交易时,对于支出的金额为正数(收入支出纯收入)或者收入的金额为负数,程序必须立即停止执行,同时发现错误,当正式收益时…

前端基础-VUE入门教程(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VUE简介1.1 搭建Vue开发环境1.2 初始Vue1.3 Vue模板语法1.4 数据绑定1.5 el和data的两种写法1.6 MVVM模型1.7 数据代理Object.defineProperty方法Vue中的数…

web前端开发基础入门篇(一)

1、什么是web? www是环球信息网的缩写,(亦作“web”、“www”、“w3 ”,全称为“World Wide Web”,中文名字是“万维网”和“环球网”,所以常简称web。 2、关于HTML HTML是一种用来描述网页的语言&…

【CSS基础】黑马程序员web前端开发入门(三)视频笔记

标题 1 基础认知1.1 体验CSS1.1.1 CSS的介绍1.1.2 CSS语法规则 1.2 CSS引入方式 2 基础选择器2.1 标签选择器2.2 类选择器2.3 id选择器2.4 通配符选择器 3 字体和文本样式3.1 字体样式3.1.1 字体大小:font-size3.1.2 字体粗细:font-weight3.1.3 字体样式…

前端开发入门到实战:HTML5 video视频播放

一、下面播报一则新闻 Chrome 70已经原生支持HTML5 <video>播放时候Picture-in-Picture,也就是俗称的画中画技术,也就是很多视频网站看评论时候,播放视频变小挂在右下角的这种交互技术。 我一瞅自己的Chrome浏览器,正好就是Chrome 70,体验了一番,挺有意思的,值得…

推荐六本前端开发必看的书籍

本文主要推荐六本前端开发必看的书籍 第一本&#xff1a;《JavaScript 语言精粹(修订版)》 我毕业后工作头一两年读的第一本 JavaScript 书就是《JavaScript 语言精粹》&#xff0c;当时完整地读了两遍&#xff0c;后来还时不时地会翻里面的重点看。对于前端刚工作的人和前端刚…

web前端开发入门学习线路图详解-2019升级版

现如今,Web前端工程师已经成为各大互联网公司不可或缺的热门职位,从业者队伍日渐庞大,这其中不乏零基础学习者和转行人士。为了方便大家系统而全面的掌握前端基础知识,千锋小编特意整理了web前端开发入门学习线路图和前端学习详细知识点汇总,希望对大家的学习有所帮助。 项…

【CSS进阶】黑马程序员web前端开发入门(四)视频笔记

标题 1 选择器进阶1.1 复合选择器1.1.1 后代选择器1.1.2 子代选择器 1.2 并集选择器1.3 交集选择器1.4 hover伪类选择器1.5 Emmet语法 2 背景相关属性2.1 背景颜色2.2 背景图片2.3 背景平铺2.4 背景位置2.5 背景相关属性连写拓展 3 元素显示模式3.1 块级元素3.2 行内元素3.3 行…

前端开发者快速入门安卓开发(安卓嵌入式开发课程经验总结)

目录 1.安卓开发结构2.xml3.java使用xml的标签Bitmap 4.开发注意 1.安卓开发结构 安卓开发和前端有异曲同工之处&#xff0c;只是js换成了Java&#xff0c;它的界面层是xml格式的&#xff0c;布局全部放在layout下 2.xml 以layout为根标签节点&#xff0c;一般有linearlayo…

WEB前端开发快速入门教程

目前web产品交互越来越复杂&#xff0c;用户使用体验和网站前端性能优化这些都得靠web前端工程师去做&#xff0c;web前端工程师是设计加开发的综合体&#xff0c;web前端工程师是在开发人员中最直接面向产品&#xff0c;面向用户的设计人员&#xff0c;一个开发团队的成果是要…

前端入门 01:基础入门

文章目录 目的开发工具基础说明简单示例相关拓展第三方库与框架打包成APP后端开发 总结题外话 目的 这些年硬件性能越来越好&#xff0c;HTML5、CSS3、ES6等新特性被越来越广泛的支持&#xff0c;前端开发变得越来越火。它简单易上手、效果华丽、跨平台&#xff0c;用作用户界…

前端之JavaScript入门篇

提示&#xff1a;这里是重中之重&#xff01; 文章目录 前言一、学习JavaScript的准备1.JavaScript的好处1.1、JavaScript的普适性1.2、JavaScript的易学性 2.如何插入JS3.引用JS外部文件4、JS在页面中的位置4.1、放在 部分&#xff1a;4.2、放在部分&#xff1a; 5、JavaScrip…

Web前端开发入门

浏览器工作原理 浏览器的工作原理&#xff1a;新式网络浏览器幕后揭秘 理解浏览器工作原理&#xff0c;包括浏览器的构成和渲染引擎的工作方式等。 这里简单提取了笔记&#xff0c;方便复习的时候快速过一遍。 https://blog.csdn.net/qq_18738333/article/details/87382924 …

前端开发入门之道

原文&#xff1a;http://www.w3cfuns.com/notes/18321/b3fe50a5de4e5d2922768aff34f21216.html 结合个人经历总结的前端入门方法&#xff0c;总结从零基础到具备前端基本技能的道路、学习方法、资料。由于能力有限&#xff0c;不能保证面面俱到&#xff0c;只是作为入门参考&a…

谷粒商城:06. 前端开发基础知识

前端技术栈对比 一、 VSCode使用 1. 安装常用插件 切换到插件标签页 安装以下基本插件 2. 创建项目 vscode 很轻量级&#xff0c;本身没有新建项目的选项&#xff0c;创建一个空文件夹就可以当做一个项目 3. 创建网页 创建文件 命名为 index.html 快捷键 ! 快速创建网…

前端入门教程(一)

1.网页 1.1 什么是网页 网站是指在因特网上根据一定的规则&#xff0c;使用HTML等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”&#xff0c;通常是HTML格式的文件&#xff0c;它要通过浏览器来阅读。 网页是构成网站的基本元素&#xff0c;它通常由图片、链…

ThinkPHP6.0学习入门:环境搭建与安装教程

ThinkPHP6.0的环境要求如下&#xff1a; PHP > 7.1.06.0版本开始&#xff0c;ThinkPHP必须通过Composer方式安装和更新。 环境搭建&#xff1a; 可使用phpEnv软件快捷生成TP6所需的集成环境&#xff0c;包含了PHP7.4语言&#xff0c;Apache web服务器&#xff0c;Nginx w…

本机php环境搭建教程:windows环境下wampserver的配置教程——超级详细

转载自&#xff1a;http://youchunyan5.blog.163.com/blog/static/5896062020123474456352/ 本机php环境搭建教程&#xff1a;windows环境下wampserver的配置教程——超级详细 2012-01-25 14:28 对于初做PHP网站的朋友来说&#xff0c;第一步肯定是希望在自己电脑是搭建PHP环…

VSCode搭建 c 环境教程

文章目录 前言一、准备材料1.Visual Studio Code2.MinG-W64编译器 二、 环境搭建1.MinGW-w64编译器2.VSCode 三、整合四、测验疑难解答①.问&#xff1a;啥是VS Code&#xff1f;②.问&#xff1a;啥是编译器&#xff1f;③.问&#xff1a;什么是编程环境&#xff1f;④.问&…

ubuntu 搭建php环境

安装MySQL sudo apt-get install mysql-server安装过程设置mysql密码使用mysql -u root -p命令输入密码登录数据库 安装apache2 安装&#xff1a;sudo apt-get install apache2查看状态&#xff1a;service apache2 status 或 浏览器访问 localhost重启&#xff1a;service …