-1

C++ 异常可以“突然出现”吗?不是字面意思。当 C++ 运行时可以从不是函数显式调用的地方抛出异常时,有人知道不明显的特殊情况吗?

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

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

  1. 隐藏函数调用的宏处理器技巧;
  2. 默认构造函数;
  3. 析构函数;
  4. 重载运算符;
  5. 重载转换;
  6. 未重载的运算符newnew[];

MSVC 提供了一个选项,允许将硬件异常(GPF、被零除等)作为 C++ 异常处理。任何人都可以评论如何在其他平台上处理这个问题,或者也许有人知道标准中的一个正确位置来讨论这个问题吗?

对于否决这个问题的人:请有勇气说出这里出了什么问题。

4

1 回答 1

3

不,不,没有,它只是一个 MSVC 选项。只有 Windows 将硬件错误视为异常,并且这些结构化异常只有在您要求时才会转换为 C++ 异常。其他平台使用信号。

例外不是凭空出现的。当您或标准库中定义明确的位置(以及像dynamic_cast. C++ 运行时不会把它们扔掉。如果你有一个未知来源的异常,那就找一个更好的调试器并学习如何使用它,直到它没有未知来源。

于 2012-10-17T03:27:49.573 回答