c++ - 什么时候应该使用 assert()?

标签 c++ assert

在与许多开发人员一起开发一个大型 C++ 编程项目时,我们遇到了在代码中不恰本地使用 assert() 的问题,这会导致断言确实发生并导致产品崩溃的质量不佳。

问题是适用于正确使用 assert() 的好的原则是什么?什么时候使用 assert() 合适,什么时候不合适?是否有每个断言都应该通过的标准列表才能合法?我们如何鼓励正确使用 assert()?

作为对此的第一个破解,我会说 assert() 应该只用于记录被认为不可能达到的条件,并且应该在运行时将其标识为 assert() 失败出现是因为违反了编程假设。

人们可以做得比这更好吗?您使用 assert() 的体验如何?

最佳答案

对来自外部(方法外部或程序外部)的错误情况使用异常,例如参数检查和缺失/缺陷外部资源,如文件或连接或用户输入。

使用断言来指示内部缺陷,例如编程错误、不应发生的情况,例如类/方法不变量和无效的程序状态。

关于c++ - 什么时候应该使用 assert()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702307/

相关文章:

c++ - 按内核线程增量

c++ - 使用对象的浅拷贝时出现双重释放错误......如何解决?

javascript - 如何 stub new Worker()

java - LogCat 中断言和断言过滤器的用途及其用途以及为什么它与 Log.e() 不同?

c++ - 使用默认模板参数引入派生类型

c++ - 复制构造函数中的 const 而不是 const?

c++ - 多线程中的临界区用法?

c - 即使条件为真,断言也会使我的程序崩溃

c# - Assert.AreEqual(object, object) 方法

c# - 比较两个数据表(单元测试、集成测试、C#、TestMethod)