断言是一种开发工具和编程语言功能,用于检查程序运行时条件表达式是否为true。 它们在测试和开发过程中很有用,通常在生产代码中省略。 这样做的关键原因是它们要求启用命令行标志,因此如果启用了这些命令行标志,则会限制适当的功能可移植性。 因此,不建议将它们用于生产代码。 他们不是为此设计的。 它们可以替代程序员过去用if语句进行检查的情况。 与if语句和断言在运行时未启用时相比,它们要紧凑得多。 断言是在Java中使用assert关键字完成的。 如果条件评估为false,则抛出AssertionError 。 感谢Joshua Bloch的语言功能。
要配置断言选项,必须使用-ea或-da命令行标志通过命令行工具“ java”启用或禁用断言 。 例如,“ java -ea Assert”,其中Assert是Java类文件。 您还可以如下指定特定的类或程序包。 对于类:“ -ea:Class”,“-ea:Package / Class”。 对于包(及其子包):“ -ea:Package…”。 注意省略号(三个连续的期间),它们是格式的一部分。
在Java代码中,断言采用以下两种形式:
- 断言条件
- 断言条件:表达式;
在第一种形式中,condition是Java中的条件表达式,结果为True或False。 在第二种形式中,如果条件为假,则执行表达式。 这可以是非void类型的任何表达式。 此Expression的结果的String表示形式将用于形成AssertionError对象。 在这两种情况下,如果条件表达式的结果为false,则抛出AssertionError。
还请参见:
断言示例
基本断言用法:
基本断言用法以及添加的Expression示例:
使用自定义类实例作为表达式的基本断言用法:
还请参见:
捕获由assert生成的AssertionError异常对象:
捕获AssertionError对象以在try-catch之外使用:
注意! 为了完整起见,我们展示了如何捕获AssertionError。 但是,如果需要, 绝对不要尝试捕获Errors ,而只能捕获 Exceptions!
解析命令行参数并检查条件的程序。 切记:建议不要使用生产代码。
还请参见:
资源:
输出:
以及更多。 试一试,让我知道您的喜欢:)
想要来源吗? 在这里抓住它 。
This article was originally published on The Java Report .