java - 如果在生产中未打开断言,则如何检查变量的有效性?

标签 java assertion

我指的是这篇文章:What does the Java assert keyword do, and when should it be used?

我的理解是:断言有助于检查变量的有效性,如果检查失败,则会抛出AssertionError。并且此检查通常在生产中关闭。


问题1:为什么在生产中我们不需要检查参数的有效性?我的意思是,用户可以传入无效参数来故意破坏程序,对吗?

问题2:由于断言在生产中通常是关闭的,这是否意味着除了断言之外我还需要编写检查并抛出异常?

最佳答案

关键是您的用户可能希望您的应用程序健壮。他们不希望您的应用程序在某些内部断言不成立时死亡

换句话说:测试和生产在很多方面都有所不同;其中之一是错误的处理。测试人员可能想要快速失败;以及尽可能精确的错误信息。最终用户想要继续他正在做的事情;如果有的话;他想要一些错误代码,以便他可以向您报告。

所以:您的代码中仍然需要专门的错误处理;如果某些方法因“错误”输入而失败;那么它应该抛出相应的异常。然后其他一些组件应该捕获该异常并决定从那里做什么。换句话说:您可能根本不想使用断言。因为您想要测试最终用户将使用的完全相同的产品。因此,有两种不同的错误处理方式并不是一个有用的模式。

关于java - 如果在生产中未打开断言,则如何检查变量的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38745899/

相关文章:

java - 在 proguard android 中忽略警告是正确的

java - 如何在java中排序和打印hashMap

java - 需要一个应用程序来修复带有未转义字符的 XML

java - 如何使用 Selenium TestNG 和 Java 转换和匹配背景颜色 RGB(255, 255, 255) 与#fff

Java Hamcrest Matcher 检查列表是否包含另一个列表

java - 在 for 循环期间添加到 ascii 代码

java - 选择在同一行上运行更新语句时不返回结果?

javascript - 断言 testcafe 中是否存在带有特定文本的 td DOM

JAVA - Selenium WebDriver - 断言和等待

java - 使用 Selenium WebDriver 和 java 检查该元素不存在的最佳方法