функция set_terminate у меня не работает

#c #visual-c #c 14

#c #завершающий обработчик

Вопрос:

У меня есть следующий код, взятый изcplusplus.com:

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

void myterminate () {
  cout << "terminate handler calledn";
  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:

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

Комментарии:

1. Ага. Запустите программу с помощью Ctrl F5.

2. @bjskishore123: Нет, это особенность 🙂