#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: Нет, это особенность 🙂