2010-11-07 50 views
8

he el siguiente código tomado de cplusplus.com:función set_terminate no está funcionando para mí

// 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; 
} 

Como no es una excepción no controlada en el código, tiene que llamar a la función myterminate() que se establece como terminar manejador y se supone que debe anular el manejador de finalización predeterminado.

El programa se bloquea pero no invoca myterminate(). Estoy usando Visual C++ 2008 Express Edition.

¿Cuál es el problema con el código?

Respuesta

10

Una posibilidad: si está ejecutando el programa dentro del depurador VC++, el depurador detecta excepciones no controladas y es posible que no devuelva el control al programa en ejecución para ejecutar myterminate. Intente ejecutar su programa fuera de Visual C++.

+3

Sí. Comience el programa con Ctrl + F5. –

+0

¿Es un error en el depurador? – bjskishore123

+2

@ bjskishore123: No, esa es una característica :) –

Cuestiones relacionadas