我指的是这篇文章:What does the Java assert keyword do, and when should it be used?
我的理解是:断言有助于检查变量的有效性,如果检查失败,则会抛出AssertionError
。并且此检查通常在生产中关闭。
问题1:为什么在生产中我们不需要检查参数的有效性?我的意思是,用户可以传入无效参数来故意破坏程序,对吗?
问题2:由于断言在生产中通常是关闭的,这是否意味着除了断言之外我还需要编写检查并抛出异常?
最佳答案
关键是您的用户可能希望您的应用程序健壮。他们不希望您的应用程序在某些内部断言不成立时死亡。
换句话说:测试和生产在很多方面都有所不同;其中之一是错误的处理。测试人员可能想要快速失败;以及尽可能精确的错误信息。最终用户想要继续他正在做的事情;如果有的话;他想要一些错误代码,以便他可以向您报告。
所以:您的代码中仍然需要专门的错误处理;如果某些方法因“错误”输入而失败;那么它应该抛出相应的异常。然后其他一些组件应该捕获该异常并决定从那里做什么。换句话说:您可能根本不想使用断言。因为您想要测试最终用户将使用的完全相同的产品。因此,有两种不同的错误处理方式并不是一个有用的模式。
关于java - 如果在生产中未打开断言,则如何检查变量的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745899/