0

我通常使用异常处理来优雅地抛出异常并处理它而不会导致应用程序崩溃。

我继承了一些到处使用断言的代码,并且应用程序在调试时崩溃了很多,每次断言失败时,都会出现断言失败错误。

很多时候,这些断言会检查某些东西是否不为空,如果为空,它会因断言失败而崩溃。

与做相比,这似乎完全适得其反,if(var!=null)但我错过了什么吗?我是否错过了有关此代码设计范例的新奇事物?

我目前的断言是所有assert调用都应该被注释掉,任何问题错误都应该检查空变量

我写了这篇文章,希望这个问题有一个实际的答案,谢谢!

4

1 回答 1

1

断言是绝对不应该发生的事情。断言不是为了检查条件,而是为了检查强假设,你确信永远不会发生。当您使用断言时,您启用它们进行调试,但它不应该出现在生产代码中。

因此,使用断言进行空检查是最糟糕的想法,因为在 Java 中,空值无处不在。更好用if(object == null)

于 2013-07-30T18:09:36.673 回答