C ++异常可以“无处不在”吗?不是字面上的。当C ++运行时可以从不是函数显式调用的地方抛出异常时,是否有人知道非明显的特殊情况?
平台特定的体验和有关偏离标准的实现的信息也很有趣。
请不要发布有关以下内容的答案:
new
和new[]
; MSVC提供了一个选项,允许处理硬件异常(GPF,除以零等)作为C ++异常。任何人都可以评论如何在其他平台上处理这个问题,或者有人知道标准中的正确位置可以说明这一点吗?
对于那个贬低这个问题的人:请你有勇气告诉我这里有什么问题。
答案 0 :(得分:3)
不,不,而且没有,它只是一个MSVC选项。只有Windows会处理异常等硬件错误,如果您要求,这些结构化异常只会转换为C ++异常。其他平台使用信号。
例外情况并非无处不在。当你或者标准库中的定义明确的地方(以及像dynamic_cast
这样的一对夫妇)扔掉它们时,它们就来了。 C ++运行时不会为lolsies抛出它们。如果你有一个未知来源的例外,那么得到一个更好的调试器,并学习如何使用它,直到它没有未知来源。