java -ea

作者:原创时间:2022-03-22
文档

java -ea是什么,让我们一起了解一下?

java -ea是断言中的一个参数,断言在默认情况下是关闭的,要在编译时启用断言,需要使用source1.4标记,既javac source1.4Test.java,在运行时启用断言需要使用 -ea参数 。

下面我们介绍一下断言在JAVA中的使用是怎样的,注意JAVA是从JDK1.4才开始支持断言的(添加了关键字assert),请注意老版的JRE不支持。

1、断言概述

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式,断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。使用断言可以创建更稳定,品质更好且易于除错的代码,当需要在一个值为FALSE时中断当前操作的话,可以使用断言单元测试必须使用断言(Junit/JunitX)。

除了类型检查和单元测试外,断言还提供了一种确定个种特性是否在程序中得到维护的极好的方法,使用断言使我们向按契约式设计更近了一部常见的断言特性。

前置条件断言:代码执行之前必须具备的特性。

后置条件断言:代码执行之后必须具备的特性。

前后不变断言:代码执行前后不能变化的特性。

 

2、断言使用方式

断言可以有两种形式

1.assert Expression1

2.assert Expression1:Expression2

其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。

3、起用断言

断言在默认情况下是关闭的,要在编译时启用断言,需要使用source1.4标记 既javac source1.4 Test.java ,在运行时启用断言需要使用 -ea参数 。要在系统类中启用和禁用断言可以使用 -esa 和 -dsa参数。

例如:

public class AssertExampleOne{
   public AssertExampleOne(){}
   public static void main(String args[]){
      int x=10;
      System.out.println("Testing Assertion that x==100");
      assert x=100;"Out assertion failed!";
      System.out.println("Test passed!");
   }
}

如果编译时未加 -source1.4,则编译通不过,在执行时未加 -ea 时输出为:

Testing Assertion that x==100
Test passed

jre忽略了断言的代码,而使用了该参数就会输出为:

Testing Assertion that x==100
Exception in thread "main" java.lang.AssertionError: Out assertion failed!
        at AssertExampleOne.main(AssertExampleOne.java:6)

 以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
南极洲有哪些国家 行程码带*号什么意思 祁连山在哪个省境内 idea新建java项目 java -xms java 32bit idea新建一个java项目 熊猫只有中国才有的吗 java a++和++a的区别 茉莉花茶是绿茶吗 java active 瓮安县属于哪个市 java activiti java activity 西北五省是哪五省 java actuator java add java addall java advice java aes加密 铁观音产地是哪个地方 iterator java interface java integer java instant java instance java influxdb java idea编写java程序 idea怎么建立java idea创建普通java项目 idea创建java hotspot java hibernate java hbase java guava java groupby java grep java golang调用java glue java geojson java