9

我从cplusplus.com获取以下代码:

// set_terminate example
#include <iostream>
#include <exception>
#include <cstdlib>
using namespace std;

void myterminate () {
  cout << "terminate handler called\n";
  abort();  // forces abnormal termination
}

int main (void) {
  set_terminate (myterminate);
  throw 0;  // unhandled exception: calls terminate handler
  return 0;
}

由于代码中有未处理的异常,它需要调用 myterminate() 函数,该函数设置为终止处理程序并应该覆盖默认的终止处理程序。

程序崩溃但没有调用 myterminate()。我正在使用 Visual C++ 2008 速成版。

代码有什么问题?

4

1 回答 1

10

一种可能性 - 如果您在 VC++ 调试器中运行程序,调试器会捕获未处理的异常,并且它可能不会将控制权返回给正在运行的程序以运行 myterminate。尝试在 Visual C++ 之外运行您的程序。

于 2010-11-07T18:01:28.543 回答