《Java核心技术 卷I》学习笔记28:断言

1 断言的概念

断言机制允许在测试期间向代码中插入一些检查,而在生产代码中会自动删除这些检查。使用assert关键字实现断言,这个关键字有两种形式:
assert condition;assert condition : expression;

这两个语句都会计算条件(condition),如果结果为false,则抛出一个AssertionError异常。在第二种形式中,表达式(expression)会传入AssertionError对象的构造器,并转换成一个消息字符串。

例如,要断言x是一个非负数,可以使用这条语句:

assert x >= 0;

或者将x的值传递给AssertionError对象,以便以后显示:

assert x >= 0 : x;

2 启用和禁用断言

默认情况下,断言是禁用的。启用或禁用断言是类加载器的功能。禁用断言时,类加载器会去除断言代码,因而不会降低程序运行的速度。

如果使用命令行运行程序,可以用-ea选项启用断言,用-da禁用断言。

也可以通过编程控制类加载器的断言状态,有关这方面的API展示如下:

/* java.lang.ClassLoader */
void setDefaultAssertionStatus(boolean b)
	// 为通过类加载器加载的类启用或禁用断言
void setClassAssertionStatus(String className, boolean b)
	// 为给定的类和它的内部类启用或禁用断言
void setPackageAssertionStatus(String packageName, boolean b)
	// 为给定包及其子包中的所有类启用或禁用断言
void clearAssertionStatus()
	// 删除所有显式的类和包断言状态设置,并禁用通过这个类加载器加载的所有类的断言。

3 使用断言

断言失败是致命的、不可恢复的错误,断言检查只在开发和测试阶段打开。因此,不应该使用断言向程序的其他部分通知发生了可恢复性的错误,不应该利用断言与程序用户沟通问题。断言只应该用于在测试阶段确定程序内部错误的位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值