C ++中的异常(蓝色空间异常)

时间:2012-10-17 02:52:21

标签: c++ c++11

C ++异常可以“无处不在”吗?不是字面上的。当C ++运行时可以从不是函数显式调用的地方抛出异常时,是否有人知道非明显的特殊情况?

平台特定的体验和有关偏离标准的实现的信息也很有趣。

请不要发布有关以下内容的答案:

  1. 隐藏函数调用的宏处理器技巧;
  2. 默认构造函数;
  3. 析构函数;
  4. 重载运算符;
  5. 转化次数过多;
  6. 未加载的运算符newnew[];
  7. MSVC提供了一个选项,允许处理硬件异常(GPF,除以零等)作为C ++异常。任何人都可以评论如何在其他平台上处理这个问题,或者有人知道标准中的正确位置可以说明这一点吗?

    对于那个贬低这个问题的人:请你有勇气告诉我这里有什么问题。

1 个答案:

答案 0 :(得分:3)

不,不,而且没有,它只是一个MSVC选项。只有Windows会处理异常等硬件错误,如果您要求,这些结构化异常只会转换为C ++异常。其他平台使用信号。

例外情况并非无处不在。当你或者标准库中的定义明确的地方(以及像dynamic_cast这样的一对夫妇)扔掉它们时,它们就来了。 C ++运行时不会为lolsies抛出它们。如果你有一个未知来源的例外,那么得到一个更好的调试器,并学习如何使用它,直到它没有未知来源。