在哪里放置断言?

sud*_*03r 9 c++ production-environment

对意外情况的断言被认为是良好的防御性编码实践.每当我认为可能发生意想不到的事情时,我碰巧就会发出断言,但现在这似乎对我来说太过分了.

此外,有时温和的意外情况不一定会导致崩溃甚至可能导致客户端失败.

判断是否存在硬性规定?

谢谢.

Cas*_*Cow 6

何时使用断言和异常之间的主要区别:

  • 使用断言来捕获编程错误.如果代码已正确写入,则永远不应发生断言.

  • 使用异常来捕获由意外环境引起的运行时错误.

  • 如果您的程序从文件中读取脚本或内容并且它们与预期的格式不匹配,我认为这是一个运行时条件,因此是一个例外.

出于调试目的,您可以决定在抛出异常的地方使用断言,只是为了能够更容易地在抛出异常的地方使用断言,尽管您可以使用将FILELINE插入到消息中的异常宏来执行那也是.


Hen*_*man 5

在哪里放置断言?

经常被忽视的是断言也可以作为文档辅助.

因此,不仅要测试'意外',还要使用它们来表达代码中关键点的假设(不变量).喜欢assert(high >= low)

当然,正如其他人在此指出的那样,这些都是有条件的.


pro*_*mer 0

当您非常确定在进入下一级代码之前某些条件必须为真时,就会放置断言。例如,当窗口句柄无效或某些变量没有有效值时。