Udostępnij za pośrednictwem


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.

Zobacz też

Informacje

Obsługa wyjątków C++