Java中的assert使用

2023-11-10

1、assertion(断言)是jdk1.4才开始支持的新功能,主要在开发和测试时开启,为保证性能,在正式发布后通常是关闭。

 

2、Java中assertion与C中的assertion的区别在于:

1)Java中是使用assert关键字去实现其功能,而C中是使用的类库函数;

2)C中的assertion是在编译时开启,Java中则是在运行时才开启(但是在编译时,一定要在jdk1.4环境下,否则会编译通过不,因为assert是个新的关键字),方式如下:

     java -ea AssertTest

 

3、assert表达式有两种:

1)assert exp1 此时的exp1为一个boolean类型的表达式

当其值为true时,运行通过,如果为false,则会抛出一个相应的AssertionError,注意它可以被catch,也可以不去处理

 

2)assert exp1 : exp2 此时的exp1同上,而exp2可以为基本类型或一个Object

当exp1的值为true时,同上,且exp2不会被运算;而当exp1的值为false时,将会抛出AssertionError,同时将exp2的结果作为AssertionError构造器中的参数,当使用catch该错误时,可利用getMessage()方法打印出exp2的结果。

 

4、关于assert使用的范围

1)不要将其用在去判断public方法的参数,如下

 

2)也不要将其用来去直接判断方法的返回值,如下

这种情况下,如过assertion为disabled,则f2中的f1()不会执行,此时可以用下面的方法

 

下面是两个关于assert应用的简单例子

编译:javac -d . AssertTest1.java

运行:java -ea AssertTest1

结果为:

in true condition

Exception in thread "main" java.lang.AssertionError

                at AssertTest1.assertMe(AssertTest1.java:4)

                at AssertTest1.main(AssertTest1.java:14)

 

 

运行后结果:

in true condition

Error Occur!

 

 

详细参考:http://arthennala.blog.51cto.com/287631/56996

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中的assert使用 的相关文章

随机推荐

  • 折半查找(C语言)

    折半查找 设定查找范围的下限low 上限high 由此确定查找范围的中间位置mid 中间位置的值等于待查的值 查找成功 中间位置的值小于待查的值 low mid 1 中间位置的值大于待查的值 high mid 1 直到low gt high
  • java基本语法 上

    目录 关键字与保留字 关键字 keyword 的定义和特点 保留字 标识符 Java中的名称命名规范 变量 变量的定义 变量的分类 整数类型 byte short int long 浮点类型 float double 字符类型 char 布
  • 函数与对象关系

    函数是对象 通过下面代码就能验证 var fn function console log fn instanceof Object true 函数跟对象之间的关系比较复杂 首先 所有对象都是通过函数创建的 有些人可能反驳 不对因为 var
  • AntD 可编辑行表格

    本地数据代码模板自用 官网例子改改 编辑行的自定义表格 import React useState from react import Table Input InputNumber Popconfirm Form Typography D
  • Umijs组件的初次应用

    在Umijs组件中我们不像vue那样可以看到组件的路径 在umijs刚刚搭建完成我们看不到组件的路径 所以我们要手动进行一些小小的改动 就可以看到了 一 应用前的准备 1 在当前项目文件路径下的终端输入 npm umi g page log
  • C 求整数n的二进制有多少个1

    首先 整数 分为正整数和负数 那么解题的时候就要注意这个正 负 提供了3中解题方案 第一种 int getBinary1 unsigned int n int count 0 while n if n 2 1 count n 2 retur
  • 说了那么多,到底什么是「神经搜索」?

    从人脑神经网络到深度学习神经网络 来自 Jina AI 的 Jack 将带大家从 0 到 1 认识 搜索 及 神经搜索 什么是神经搜索 它与普通搜索有什么区别 它能解决哪些问题 又有哪些优势和劣势 观看本期 Jina AI 小科普 在 Ja
  • SQL Server 问题集

    问题一 执行drop database xxx 反馈结果 无法对 数据库 xxx 执行 删除 因为它正用于复制 解决方案 只需要执行 sp removedbreplication XXX 然后再执行drop database xxx 原因分
  • vs2022提示函数不安全等问题

    我们在使用VS编译器编写C C 代码源程序的时候 发现在里面用scanf函数会编译出错 如下图所示 这个提示我们有两种方案可以解决 一是可以把scanf函数替换为 scanf s 如下 此时编译就会通过 但是在其他编译器里没有这个函数 因此
  • 【Figma技巧】Figma中快速制作斜线阴影的三种方法

    想要实现的效果 方法一 安装Hero Patterns插件 安装地址 https www figma com community plugin 743134103711120154 Hero Patterns for Figma 缺点 生成
  • openldap介绍和使用

    openldap介绍和使用 为什么会有本文 早期 公司是没有统一认证这个东西的 所以各自玩各自的 于是 confluence一个用户体系 gitlab一个用户体系 Jenkins一个用户体系等等 开发中要用到的开源软件数不胜数 每个软件都要
  • 齐纳二极管

    齐纳二极管 zener diodes 的主要作用就是当作一种电压调整器 QLCO A146提供稳定的参考电压 可应用在电源供应器 电压表与其他的仪器中 在本节中 你将会学习到齐纳二极管在适当的工作条件下 如何维持一个接近定值的直流电压 你将
  • HCL网络实操之ftp登录

    路由器配置ip in g0 0 ip address 192 168 56 200 24 路由器开启ftp服务 ftp server enable 创建用户 设置用户密码 设置权限 创建用户 local user cmoc 设置用户密码 p
  • JCreator 配置与用法

    对于一个web项目 里面由几个比较来说相对的标准目录 CSS 用来存放web项目中所使用到的样式文件 images 用来存放web项目中所使用的装饰图片 WEB INF 用来表示是一个jsp类型的项目 并且符合J2EE标准 inc 或者 i
  • 2023通信工程专业毕设题目大全

    文章目录 1前言 2 如何选题 3 通信工程选题方向 3 1 移动通信方向 3 2 嵌入式开发方向 3 3 人工智能方向 3 4 物联网方向 3 5 算法研究方向 3 6 移动应用开发方向 3 7 网络通信方向 3 8 学长作品展示 4 最
  • redis后端启动及关闭

    本文笔记为传智教程视频截图整理 redis前端启动 无法部署集群
  • 浅谈 malloc 函数在单片机上的应用

    聊聊 malloc函数 在单片机程序设计中怎么使用 目录 前言 一 malloc 函数简介 二 malloc 之于单片机 2 1 malloc 函数申请的内存在哪里 2 2 用与不用malloc的区别 三 malloc可能遇到的问题 3 1
  • RGMII时序约束

    RGMII是以太网MAC连接PHY的一种接口 可以实现10 100 1000M网络速度 在FPGA系统中比较常见 RGMII在1000M模式下是双沿采样 而且要求采样端是center aligned 所以其时序约束是比较复杂的 下面分TX和
  • Redis学习笔记04-基础知识

    测试性能 redis benchmark Redis官方提供的性能测试工具 参数选项如下 十六个数据库 默认使用的第0个 16个数据库为 DB 0 DB 15 默认使用DB 0 可以使用select n切换到DB n dbsize可以查看当
  • Java中的assert使用

    1 assertion 断言 是jdk1 4才开始支持的新功能 主要在开发和测试时开启 为保证性能 在正式发布后通常是关闭 2 Java中assertion与C中的assertion的区别在于 1 Java中是使用assert关键字去实现其