gpt4 book ai didi

java - 为什么我应该更喜欢 checkState 而不是断言?

转载 作者:行者123 更新时间:2023-12-02 05:37:31 30 4
gpt4 key购买 nike

使用 checkState 相对于断言有什么好处吗?我记得在某处读过我应该更喜欢 checkState 但我不记得为什么。

最佳答案

checkStateassert 具有完全不同的目的。

checkState 是一个前提条件检查,如果调用者在程序处于该方法所处的状态时调用您的方法,则会引发异常可能不会被调用。 (这意味着他们错误地使用了您的代码;他们应该能够通过正确使用来避免在错误的时间调用该方法。)

assert 通常最多是对您知道在程序中的该点必须为真的某些内容进行健全性检查(类似于已编译的注释)。此外,根据启动 JVM 时的标志,可以启用或禁用 assert。通常在生产中禁用它。因此,即使您确实以某种方式进入了您断言不可能的状态,您也不能依赖它来破坏方法的流程。

Guava 的新版本(截至 17.0)Verify class 类似于总是启用的 assert,但不完全是这样;它适用于不应该发生的情况,但如果某些外部服务(即您的代码正在调用的服务,而不是调用您的代码)以它声称不应该发生的方式运行,则可能会出现这种情况。有关 PreconditionsassertVerify 之间差异的更多信息,请参阅其 Javadoc。

关于java - 为什么我应该更喜欢 checkState 而不是断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24831632/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com