如果断言失败,是否有错误?

noc*_*ura 10 debugging assert

我一直遵循逻辑:如果断言失败,那么就有一个错误.根本原因可能是:

  • 断言本身无效(bug)
  • 编程错误(bug)
  • (没有其他选择)

IE有没有其他可以得出的结论?是否存在断言失败并且没有错误的情况?

L̲̳*_*̲̳̳ 6

如果assert失败,则调用者或被调用者都会出现错误.为什么会有一个断言呢?

  • 好吧,如果它预计会失败,它并不真正满足断言的要求.当你说"我断言这是真的"时,你并不是说它有时或通常是真的,你说这总是*真的. (3认同)

Nic*_*kis 5

是的,代码中有一个错误.

代码完成

断言检查应该永远不会发生的情况.[...]

如果针对异常情况触发了断言,则纠正措施不仅仅是优雅地处理错误 - 纠正措施是更改程序的源代码,重新编译和发布新版本的软件.

思考断言的好方法是作为可执行文档 - 您不能依赖它们来使代码工作,但是它们可以比程序语言注释更积极地记录假设.