浅析Java异常处理中断言的使用
作者:goldensun 发布时间:2023-07-05 23:50:03
标签:Java,断言
断言的概念
断言用于证明和测试程序的假设,比如“这里的值大于 5”。
断言可以在运行时从代码中完全删除,所以对代码的运行速度没有影响。
断言的使用
断言有两种方法:
一种是 assert<<布尔表达式>> ;
另一种是 assert<<布尔表达式>> :<<细节描述>>。
如果布尔表达式的值为false , 将抛出AssertionError 异常; 细节描述是AssertionError异常的描述文本使用 javac –source 1.4 MyClass.java 的方式进行编译示例如下:
public class AssertExample {
public static void main(String[] args) {
int x = 10;
if (args.length > 0) {
try {
x = Integer.parseInt(args[0]);
} catch (NumberFormatException nfe) {
/* Ignore */
}
}
System.out.println("Testing assertion that x == 10");
assert x == 10 : "Our assertion failed";
System.out.println("Test passed");
}
}
由于引入了一个新的关键字,所以在编译的时候就需要增加额外的参数,要编译成功,必须使用 JDK1.4 的 javac 并加上参数'-source 1.4',例如可以使用以下的命令编译上面的代码:
javac -source 1.4 AssertExample.java
以上程序运行使用断言功能也需要使用额外的参数(并且需要一个数字的命令行参数),例如:
java -ea AssertExample 1
程序的输出为:
Testing assertion that x == 10
Exception in thread "main" java.lang.AssertionError:Our assertion failed
at AssertExample.main(AssertExample.java:20)
由于输入的参数不等于 10,因此断言功能使得程序运行时抛出断言错误,注意是错误, 这意味着程序发生严重错误并且将强制退出。断言使用 boolean 值,如果其值不为 true 则 抛出 AssertionError 并终止程序的运行。
断言推荐使用方法
用于验证方法中的内部逻辑,包括:
内在不变式
控制流程不变式
后置条件和类不变式
注意:不推荐用于公有方法内的前置条件的检查。
运行时屏蔽断言
运行时要屏蔽断言,可以用如下方法:
java –disableassertions 或 java –da 类名
运行时要允许断言,可以用如下方法:
java –enableassertions 或 java –ea类名
0
投稿
猜你喜欢
- excel对于下拉框较多选项的,需要使用隐藏工作簿来解决,使用函数取值来做选项选项较少(一般少于5个):private static Dat
- 概念异常处理的概念起源于早期的编程语言,如 LISP、PL/I 和 CLU。这些编程语言首次引入了异常处理机制,以便在程序执行过程中检测和处
- 1、什么是hashCodehashCode就是对象的散列码,是根据对象的某些信息推导出的一个整数值,默认情况下表示是对象的存储地址。通过散列
- 前言:Guarded Suspension意为保护暂停,其核心思想是仅当服务进程准备好时,才提供服务。设想一种场景,服务器可能会在很短时间内
- 在官方的这篇文档中为大家介绍了如何使用Java开启Azure Windows虚拟机的诊断设置这篇文章呢,为大家介绍一下如何使用Java开启L
- private void button1_Click(object sender, EventArgs e) &nbs
- 1.面对对象的初步认识1.1什么是面向对象用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。1
- 迭代器模式,一直没用过,也不会用。恰巧MyBatis框架中也使用到了迭代器模式,而且看起来还比较简单,在以后的工作中,若有需要咱们可模仿它的
- 介绍这里学习SpringSecurity,对SpringSecurity进行学习。基本用法添加依赖<dependency> &n
- 初步计划:或许由于个人原因,排球计分系统在假期就完成了,一直未写博客,就这样一直在推就是不想写,在加上过完年就工作了,可能刚实习工作比较紧所
- 一、堆的创建1、向下调整(以小堆为例) 让parent标记需要调整的节点,child标记parent的左孩子(注意:parent
- 附GitHub源码:WebViewExplore一、WebView的基础配置WebSettings ws = getSettings();w
- ArrayList的构造方法(前置知识)可快速过一些基本成员变量:// 默认初始大小private static final int DEF
- JVM的对dll文件的装载过程操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.1.创建JVM装载环境和
- 文件输出为字符串示例代码:/** * 读取文件为字符串 * * @return */pub
- 本文实例讲述了C#显示文件夹下所有图片文件的方法。分享给大家供大家参考。具体实现方法如下:<%@ Page Language=&quo
- springcloud eureka切换nacos配置中心地址: http://10.166.9.7:8848/nacos/bootstra
- C# 日历类的实现代码,具体如下所示:using System;namespace DotNet.Utilities{ ///
- 本文实例讲述了Java实现自动压缩文件并加密的方法。分享给大家供大家参考,具体如下:实现功能:自动压缩并加密/**** @Title: zi
- 目录前沿快速开始引入依赖定义接口配置类开始调用json序列化接口层面指定header:指定Encoder跟Decoder使用 * 注解详解@