Nicht behandelte C++-Ausnahmen

Wenn ein entsprechender Handler catch-handler Auslassungspunkte (oder keine) für die aktuelle Ausnahme gefunden werden kann, wird die vordefinierte terminate Laufzeitfunktion aufgerufen.(Sie können terminate in einem der Handler auch explizit aufgerufen werden.) Die Standardaktion von terminate ist, abortaufzurufen.Wenn Sie terminate eine andere Funktion im Programm aufrufen möchten, bevor Sie die Anwendung beenden, rufen Sie die set_terminate-Funktion mit dem Namen an, der als einzelnes Argument der Funktion, die aufgerufen werden soll.Sie können set_terminate an einem beliebigen Punkt im Programm aufrufen.Die terminateRoutine enthält immer die letzte Funktion als Argument angegeben set_terminate.

Beispiel

Im folgenden Beispiel wird eine char * Ausnahme aus, sondern enthält keinen Handler, der den Erfassungs Ausnahmen des Typs char *festgelegt ist.Der Aufruf von set_terminate weist terminate auf, um term_funcaufzurufen.

// 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.

Die term_func-Funktion muss das Programm oder den aktuellen Thread beenden, ideal, indem sie exitaufruft.Ist dies nicht der Rückgabe an und stattdessen wird abort aufgerufen.

Siehe auch

Referenz

C++-Ausnahmebehandlung