Eccezioni non gestite di C++
Se un gestore corrispondente o di sospensione catch il gestore) non è disponibile per l'eccezione corrente, predefinita terminate la funzione in runtime viene chiamata.(È anche possibile chiamare in modo esplicito terminate nei gestori.) l'azione predefinita di terminate viene chiamata abort.Se si terminate per chiamare un'altra funzione del programma prima di uscire dall'applicazione, chiamare set_terminate utilizzare il nome della funzione da chiamare lo come unico argomento.È possibile chiamare set_terminate in qualsiasi punto del programma.terminatela routine chiamare sempre l'ultima funzione fornita come argomento a set_terminate.
Esempio
Nell'esempio seguente viene generato un oggetto char * l'eccezione, ma non contiene un gestore definito di rilevare le eccezioni di tipo char *.la chiamata a set_terminate indica a terminate per chiamare 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;
}
Output
term_func was called by terminate.
term_func la funzione deve terminare il programma o il thread corrente, idealmente chiamando exit.In caso contrario e anziché restituito al chiamante, abort viene chiamato.