Nieobsłużone wyjątki C++
Jeśli pasujące obsługi (lub wielokropek połowu obsługi) nie można odnaleźć dla bieżącego wyjątku, wstępnie terminate wywoływana jest funkcja run-time.(Można także jawnie wywołać terminate w dowolnym obsługi sieci.) Domyślna akcja terminate jest wywołanie abort.Jeśli chcesz terminate do wywołania niektórych innych funkcji w programie, przed zakończeniem pracy aplikacji, należy wywołać set_terminate funkcji o nazwie funkcji do wywołania jako pojedynczy argument.Można wywołać set_terminate w dowolnym miejscu programu.terminate Rutynowych zawsze wywołuje ostatniej funkcji podane jako argument do set_terminate.
Przykład
Poniższy przykład generuje char * wyjątek, ale nie zawiera obsługi, wyznaczone w celu przechwycenia wyjątków typu char *.Wywołanie set_terminate powoduje, że terminate do wywołania 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;
}
Dane wyjściowe
term_func was called by terminate.
term_func Funkcja powinna zakończyć działanie programu lub bieżącego wątku, najlepiej przez wywołanie exit.Jeśli nie, a zamiast tego wraca do miejsca wywołania, abort jest wywoływana.