关于如何以及何时使用断言,我已经阅读了大量的 物品(以及 StackOverflow 上发布的其他一些 相似问题) ,而且我很好地理解了它们。但是,我仍然不明白什么样的动机应该驱使我使用 Debug.Assert
,而不是抛出一个普通的异常。我的意思是,进去。NET 对失败断言的默认响应是“停止世界”并向用户显示一个消息框。虽然这种行为可以被修改,但是我发现它非常烦人和多余
这样做,而我可以,只是抛出一个合适的异常。这样,我可以在抛出异常之前轻松地将错误写入应用程序的日志,而且,我的应用程序不一定会冻结。
那么,如果可以的话,为什么要使用 Debug.Assert
而不是一个普通的异常呢?将断言放在不应该放置的位置可能会导致各种“不必要的行为”,所以在我看来,使用断言而不是抛出异常实际上并没有什么好处。你同意我的观点吗,还是我漏掉了什么?
注意: 我完全理解“理论上”的区别(调试与发布,使用模式等) ,但是在我看来,抛出异常比执行断言更好。因为如果在产品发布中发现了 bug,我仍然希望“断言”失败(毕竟,“开销”小得可笑) ,所以我最好还是抛出一个异常。
编辑: 在我看来,如果断言失败,就意味着应用程序进入了某种损坏的、意外的状态。那我为什么还要继续执行呢?应用程序是在调试版本还是发布版本上运行并不重要。两者都一样