java中Assert学习笔记

javaAssert的用法

概念:

Assert是在J2SE1.4中引入的新特性,assertion就是在代码中包括的布尔型状态。在软件开发中,assertion是一种经典的调试、测试方式。

在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证这个boolean表达式的值为true;如果该值为false,说明程序已经处于不正确的状态下,系统将给出警告或退出。一般来说,assertion用于保证程序最基本、关键的正确性。assertion检查通常在开发和测试时开启。为了提高性能,在软件发布后,assertion检查通常是关闭的。

语法:

assert expression1;

assert expression1: expression2;

这两种表达式中,expression1表示一个boolean表达式,expression2表示一个基本类型或者是一个对象(Object) ,基本类型包括boolean,char,double,float,intlong。由于所有类都为Object的子类,因此这个参数可以用于所有对象。

在运行时,如果关闭了assertion功能,这些语句将不起任何作用。如果打开了assertion功能,那么expression1的值将被计算,如果它的值为false,该语句强抛出一个AssertionError对象。如果assertion语句包括expression2参数,程序将计算出expression2的结果,然后将这个结果作为AssertionError的构造函数的参数,来创建AssertionError对象,并抛出该对象;如果expression1值为trueexpression2将不被计算。

一种特殊情况是,如果在计算表达式时,表达式本身抛出Exception,那么assert将停止运行,而抛出这个Exception

AssertionError是继承自Error得,因此可以不再程序中catch它的,当然也可以在程序中catch它然后程序可以继续执行。

配置:

可以选择开启assertion功能,或者不开启,另外还可以开启一部分类或包的assertion功能。

参数 -esa -dsa

它们含义为开启(关闭)系统类的assertion功能。开启系统类的assertion功能后,用户可以观察新版本的Java系统类中assertion语句的运行情况。-esa-dsa的全名为-enablesystemassertions-disenablesystemassertions,全名和缩写名有同样的功能。

参数 -ea -ea

它们含义为开启(关闭)用户类的assertion功能。打开assertion功能参数为-ea;如果不带任何参数,表示打开所有用户类;如果带有包名称或者类名称,表示打开这些类或包;如果包名称后面跟有三个点,代表这个包及其子包;如果只有三个点,代表无名包。关闭assertion功能参数为-da,使用方法与-ea类似。 -ea-da的全名为-enableassertions-disenableassertions,全名和缩写名有同样的功能。

例子说明

-ea java -ea 打开所有用户类的assertion

-da java -da 关闭所有用户类的assertion

-ea: java -ea:MyClass1 打开MyClass1assertion

-da: java -da: MyClass1 关闭MyClass1assertion

-ea: java -ea:pkg1 打开pkg1包的assertion

-da: java -da:pkg1 关闭pkg1包的assertion

-ea:... java -ea:... 打开缺省包(无名包)assertion

-da:... java -da:... 关闭缺省包(无名包)assertion

-ea: ... java -ea:pkg1... 打开pkg1包和其子包的assertion

-da: ... java -da:pkg1... 关闭pkg1包和其子包的assertion

-esa java -esa 打开系统类的assertion

-dsa java -dsa 关闭系统类的assertion

实例:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值