функция set_terminate не работает для меня - PullRequest
8 голосов
/ 07 ноября 2010

У меня следующий код взят из 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 Express Edition.

В чем проблема с кодом?

1 Ответ

10 голосов
/ 07 ноября 2010

Одна возможность - если вы запускаете программу внутри отладчика VC ++, отладчик перехватывает необработанные исключения и может не вернуть управление запущенной программе для запуска myterminate. Попробуйте запустить вашу программу вне Visual C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...