我经常在C++面试问题中看到以下术语:
我不确定这些术语之间的区别是什么.有人可以提供清晰简洁的解释吗?
编辑:上下文问题是:" 当你删除指针两次时会发生什么? "但是知道这些术语之间的差异对我来说比对答案更重要.
这些并不是 C++ 特有的。
中止是指由于出现问题而终止程序或特定操作。有一个std::abort从 C 库继承的 C++ 库函数,它像通过外部信号一样终止程序,并且不运行析构函数或清理。
错误是指出现问题。在 C++ 中,许多类型的错误不一定能立即检测到。相反,C++ 指定了未定义的行为,这可能会涉及安静的内存损坏,从而可能在以后导致神秘的不当行为。
失败是指程序做了错误的事情。这是非常通用的工程术语。尖头发的老板可能比其他人更熟悉这个概念,因为这是顾客唯一真正知道的概念。
陷阱是指程序检测到错误情况并相应采取某些操作。
因此,如果您检测到网络出现故障,并在退出之前向用户显示一条消息,例如“无法继续;您的文档已自动保存”,那么您已捕获错误并中止,但仍然存在失败。