8
Debug.Assert与异常抛出
我已经阅读了很多有关如何以及何时使用断言的文章(以及在StackOverflow上发布的其他一些类似问题),并且我对它们很了解。但是,我仍然不明白应该用哪种动机来促使我使用它,Debug.Assert而不是抛出一个明显的例外。我的意思是,在.NET中,对失败的断言的默认响应是“停止运行”并向用户显示消息框。尽管可以修改这种行为,但我发现这样做非常烦人和多余,而我可以抛出一个适当的异常。这样,在抛出异常之前,我可以轻松地将错误写入应用程序日志,此外,我的应用程序不一定会冻结。 那么,为什么我应该使用Debug.Assert而不是普通的例外呢?将断言放置在不应该出现的位置可能会导致各种“有害行为”,因此,根据我的观点,我真的没有通过使用断言而不是抛出异常来获得任何好处。您是否同意我的意见,或者我在这里错过了什么? 注意:我完全理解“理论上”的区别(调试与发行,使用模式等),但是据我所知,我最好抛出一个异常而不是执行一个断言。由于如果在生产版本中发现了错误,我仍然希望“断言”失败(毕竟,“开销”很小),所以我最好抛出一个异常。 编辑:我认为,如果断言失败,则意味着应用程序进入某种损坏的意外状态。那我为什么要继续执行呢?应用程序是在调试版本还是发行版本上运行都没有关系。两者都一样