corejava11(7.4 使用断言)
7.4 使用断言 断言是防御性编程的常用习惯用法。在下面的部分中,您将学习如何有效地使用它们。 7.4.1 断言概念 假设您确信某个特定属性已经实现,并且您在代码中依赖该属性。例如,您可能正在计算 double y = Math.sqrt(x); 你确定x不是负的。可能是另一个计算的结果不能有负的结果,或者是一个方法的参数,它要求调用方只提供正的输入。尽管如此,您还是希望进行双重检查,而不是允许混淆的“非数字”浮点值进入您的计算中。当然,您可以抛出一个异常: if (x < 0) throw new IllegalArgumentException("x < 0"); 但即使在测试完成后,此代码仍保留在程序中。如果您有很多这种检查,程序可能会比它应该运行的慢很多。 断言机制允许您在测试期间放入检查,并在生产代码中自动删除它们。 Java语言有一个关键字 assert 。有两种形式: assert condition; 以及 assert condition : expression; 这两个语句都评估条件,如果条件为 false ,则抛出 AssertionError 。在第二条语句中,表达式被传递给 AssertionError 对象的构造函数,并转换为消息字符串。 注意 表达式部分的唯一目的是生成消息字符串。 AssertionError 对象不存储实际的表达式值