首页 > 编程语言 >java断言机制(assert)

java断言机制(assert)

时间:2023-03-07 14:35:24浏览次数:54  
标签:语句 Java 断言 检查 assert java 前置条件

java断言机制(assert)

概述

断言使用的时候不是很多,测试时会使用,springboot中也有使用,总的来说断言还是要慎重。
在Java中,同样也有assert关键字,表示断言
在Java中,assert关键字是从JAVA SE 1.4 引入的
为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都将忽略!)
如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。

语法

image

使用场景

断言使用场景
变量值明确
变量值如果很确定是某个值,则可以用断言。
执行不到的语句
某个地方语句确定是执行不会达到的,例如没有default的switch,则default可加上断言。
前置条件
前置条件(precondition)是一条语句,在方法执行前必须为真。
后置条件
后置条件(postcondition)是一条语句,当前置条件满足且完全执行方法后,它为真
检查类的状态
加一个内部方法,返回布尔值,当检查类状态正常时返回true。

不要用断言场景

不要用断言做参数检查
因为无论断言是启用还是禁用,都必须进行参数检查的,而断言是可能被禁用的。并且断言报出的AssertionError异常,不能准确反馈运行时异常(例如IllegalArgumentException,IndexOutOfBoundsException或NullPointerException)。
不要用断言来完成程序正确操作所需的任何工作
例如,假设你想要从列表名称中删除所有空元素,并且知道该列表包含一个或多个空值。

注意

当断言被启用时,程序会正常工作,但在禁用时会失败,因为它不再从列表中删除空元素。

点击查看代码
//动作先于断言
boolean re = names.remove(null);
assert re; //运行是否启用断言

标签:语句,Java,断言,检查,assert,java,前置条件
From: https://www.cnblogs.com/guobabiancheng/p/17187993.html

相关文章

  • 基于ElementUI和Vue.js的SUNBOOK图书后台管理系统(纯HTML、原生Java后端开发)
    一、项目介绍-使用element-ui、axios和Vue.js实现SUNBOOK的页面结构及网页请求-通过JSON传递请求与响应参数-在后端使用JdbcUtilsByDruid实现对数据的增加、删除、......
  • java代码自动生成带swagger3注解
    最近在做一个经组的项目他们用的之前同事配的[tk.mybatis.mapper.generator]自动生成的包,但是这玩意不支持swagger3注解配置。而且重写的话里边BUG还挺多。所以,索性就不用......
  • Java链接mysql
    importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;publicclassDbcon{//mysql8.0urlconf......
  • Java for ACM
    importjava.io.*;importjava.util.*;publicclassMain{staticBufferedReaderInput=newBufferedReader(newInputStreamReader(System.in));staticP......
  • Windows开机自启动运行Java的jar包
    Windows开机自启动运行Java的jar包 本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/2541直接打开电脑的目录......
  • 【备战面试】JavaScript 进阶问题列表
    在原博主Instagram上每天都会发布JavaScript的多选问题,并且同时也会在这个仓库中发布。从基础到进阶,测试你有多了解JavaScript,刷新你的知识,或者帮助你的coding面试!......
  • Java项目前端开发环境部署
    前端开发环境部署1、安装VSCodehttps://code.visualstudio.com/Download2、node.js和npm安装http://nodejs.cn/download/(1)安装完成后,cmd输入node-v和npm-v检查是......
  • 设计模式-javascript实现【状态模式】
    定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其主要原理是将状态封装成独立的类,并将请求委托给当前的状态对象,当对象内部状态变化时,会......
  • JavaScript 其他样式操作的属性
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title></title> <styletype="text/css"> #box1{ width:100px; height:100px; back......
  • JavaScript 添加删除表格记录练习
    <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd"><html> <head> <metahttp-equiv="Content-Type"content="text/html......