C++:从堆栈溢出中获取异常?

标签 c++ exception stack-overflow

我试图检查有多少递归导致堆栈溢出。 但是为什么下面的代码没有输出任何东西呢?

#include <iostream>
#include <exception>
int counter = 0;
void endlessloop() try {
    ++counter;
    endlessloop();
} catch (std::exception &e) {
    std::cout << "Call stack overflew. Counter: " << counter << std::endl <<
    "Exception: " << e.what() << std::endl;
}
int main() {
    endlessloop();
    return 0;
}

最佳答案

因为在大多数实现中,堆栈溢出会导致操作系统彻底终止进程,而不是进程抛出异常。

C++ 标准没有指定堆栈溢出导致的预期行为。堆栈溢出的结果是不确定的。在这种情况下,特定的 C++ 实现当然可以抛出异常,但这不是必需的。

关于C++:从堆栈溢出中获取异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37095299/

相关文章:

c++ - oop - C++ - 实现特定类型行为的正确方法?

javascript - 由于未授权而尝试 appendChild 脚本元素失败时抛出什么错误

java 流 : elegant way to filter according an exception is thrown

java - 从异常中获取值

c++ - 适用于 C++ 的其他包含路径和链接器选项 Gradle

c++ - 解析配置或 xml 文件的可能异常是什么?

java - 递归java的堆栈溢出错误

c - 对小文件使用读取时堆栈溢出的解释和有问题的解决方法

java - 如何获得使用 java 创建的时钟的正确输出?

c++ - 从 GMock 获得失败的期望