C ++中的异常与其他语言中的异常

时间:2014-03-30 18:01:38

标签: c++ exception

我对使用异常和try {} catch {}块的想法是那些用于错误处理的。 我正在阅读关于例外的Bjarne's Strostrup FAQ page部分,我遇到了这个

  

还有其他用例 - 在其他语言中很流行 - 但是   在C ++中不是惯用的,并且故意不被C ++很好地支持   实现(这些实现基于   假设异常用于错误处理)。

其他语言(例如C#或java)的异常的其他用法是什么?

2 个答案:

答案 0 :(得分:2)

在Python中,本着“请求宽恕而非许可”的精神,异常经常被用作应用程序的正常控制流程的一部分。例如,在字典中查找元素时(在C ++中考虑std::unordered_map):

try:
  my_value = my_dict["the answer to life, the universe and everything"]
except KeyError:
  my_value = 42

在C ++中,这不被视为“错误”的情况;异常只应用于与“不可预测”的东西交互,如硬件设备和(在某种程度上)操作系统。

答案 1 :(得分:0)

另一个用途是java中的InterrutedException。它允许在监视器或休眠线程上等待waitsleep