小编典典

在Java中声明关键字

java

您使用assert关键字还是引发一些验证运行时异常?它给您带来什么好处,或者为什么您认为不值得使用呢?


阅读 293

收藏
2020-09-28

共1个答案

小编典典

如果条件为假,则声明将抛出运行时错误(AssertionError)。断言为您提供了一种简化的方式来记录,检查和强制执行代码的正确性标准。好处是用于定义和操纵这些正确性条件的语言级挂钩。如果您希望启用或禁用它们(存在一些关于是否是个好主意的争论),则可以从JVM命令行中启用。下面的一些评论者指出,除非在调试模式下运行,否则默认情况下断言是禁用的。我的做法是始终在包装器脚本中添加“
-ea”(启用断言)。即使在性能敏感的代码中,对我来说,折衷还是权衡了我从断言中获得的安全性/正确性信心。
甲骨文API的AssertionError描述

请注意,可能在您控制范围之外的预期或意外故障(异常)与断言故障之间的区别-断言故障记录了程序员的假设,并指示程序错误,而不是意外的外部情况或预期的异常情况。
如果发生断言失败,则说明程序员是错误地理解或错误地表示了程序 ,而不是其他错误或失败源。

在实践中,我用它来记录我做出的明显或非显而易见的假设以及在生成(尤其是私有/内部)代码时要强制执行的不变量,这使我自己和其他人清楚知道为什么要做出这些假设,它们在哪里以及是否经过验证。比起评论要好得多。这是按合同设计的(小)步骤。

2020-09-28