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

时间:2016-05-08 01:22:36

标签: 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;
}

1 个答案:

答案 0 :(得分:4)

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

C++标准未指定堆栈溢出导致的预期行为。堆栈溢出的结果未指定。在这种情况下,特定的C++实现肯定会抛出异常,但不需要这样做。