Exceptions non gérées C++
Si un gestionnaire correspondant (ou le gestionnaire catch de sélection) est introuvable pour l'exception actuelle, la fonction runtime intégrée d' terminate est appelée.(Vous pouvez également appeler explicitement terminate dans l'un de vos gestionnaires.) L'action par défaut d' terminate consiste à appeler abort.Si vous souhaitez terminate pour appeler une autre fonction dans votre programme avant de quitter l'application, appelez la fonction d' set_terminate avec le nom de la fonction à appeler comme unique argument.Vous pouvez appeler set_terminate à tout moment dans votre programme.la routine d' terminateappelle toujours la dernière fonction donnée comme argument à set_terminate.
Exemple
L'exemple suivant lève une exception d' char * , mais ne contient pas de gestionnaire indiqué pour intercepter des exceptions de type char *.l'appel à set_terminate demande à terminate d'appeler term_func.
// exceptions_Unhandled_Exceptions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void term_func() {
cout << "term_func was called by terminate." << endl;
exit( -1 );
}
int main() {
try
{
set_terminate( term_func );
throw "Out of memory!"; // No catch handler for this exception
}
catch( int )
{
cout << "Integer exception raised." << endl;
}
return 0;
}
Sortie
term_func was called by terminate.
La fonction d' term_func doit terminer le programme ou le thread actuel, de préférence en appelant exit.S'il ne retourne pas, et à son appelant, abort est appelé.