Megosztás a következőn keresztül:


Nem kezelt C++ kivételek

Ha az aktuális kivételhez nem található egyező kezelő (vagy három pontkezelő catch ), a rendszer meghívja az előre definiált futásidejű függvényt terminate . (Bármelyik kezelőben explicit módon is hívhat terminate .) Az alapértelmezett művelet a terminate hívás abort. Ha az alkalmazásból való kilépés előtt más függvényt is meg szeretne terminate hívni a programban, hívja meg a set_terminate függvényt annak a függvénynek a nevével, amelyet egyetlen argumentumként szeretne meghívni. A program bármely pontján hívhat set_terminate . A terminate rutin mindig argumentumként megadott utolsó függvényt hívja meg.set_terminate

példa

Az alábbi példa kivételt char * jelez, de nem tartalmaz olyan kezelőt, amely a típuskivételek char *fogására van kijelölve. A hívás a set_terminate hívásra term_funcutasítterminate.

// 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;
}

Kimenet

term_func was called by terminate.

A term_func függvénynek meg kell szüntetnie a programot vagy az aktuális szálat, ideális esetben meghívással exit. Ha nem, és ehelyett visszatér a hívóhoz, abort a rendszer meghívja.

Lásd még

Modern C++ ajánlott eljárások kivételekhez és hibakezeléshez