陷阱,错误,失败和程序堕胎有什么区别?

时间:2013-08-12 10:08:10

标签: c++ terminology

我经常在C ++面试问题中看到以下术语:

  • 程序中止
  • 错误
  • 失败

我不确定这些条款之间的区别。有人可以提供清晰简洁的解释吗?

编辑:上下文问题是:“当你两次删除指针时会发生什么?”但是知道这些术语之间的差异对我来说比对我来说更重要答案。

2 个答案:

答案 0 :(得分:4)

这些对C ++来说并不特别。

  • Abort是指由于问题而终止程序或特定操作。有一个C ++库函数std::abort,继承自C库,它通过外部信号杀死程序,并且不运行析构函数或清理。

  • 出现问题时出错。在C ++中,不一定会立即检测到多种错误。 C ++改为指定未定义的行为,这可能涉及安静的内存损坏,可能会在以后引起神秘的不当行为。

  • 失败是指程序做错了。这是非常通用的工程术语。这个尖头发的老板可能比其他人更熟悉这个概念,因为它是客户真正意识到的唯一一个。

  • 陷阱是指程序检测到错误情况并采取相应措施时。

因此,如果您检测到网络出现故障,并在退出前向用户显示消息,例如“无法继续;您的文档已被自动保存”,那么您已经陷入错误并中止了,但不过有失败。

答案 1 :(得分:0)

所有这些术语都有点模糊,特别是错误和失败。它们基本上意味着相同的一般事物:出了点问题。程序中止可能是指调用C库标准abort函数,它会引发SIGABRT信号。这通常会导致程序无法终止,但依赖于平台以及信号是否被捕获。陷阱可能指的是一般由C库标准signal函数控制的信号捕获。