Sdílet prostřednictvím


Nezpracované výjimky jazyka C++

Nelze-li v aktuální výjimce najít odpovídající obslužnou rutinu (nebo rutinu catch se třemi tečkami), je zavolána předdefinovaná funkce modulu run-time terminate. (V libovolné obslužné rutině lze funkci terminate zavolat také explicitně.) Výchozí akcí funkce terminate je zavolání funkce abort.Chcete-li, aby funkce terminate zavolala před ukončením aplikace jinou funkci v programu, zavolejte funkci set_terminate, v jejímž jediném argumentu bude název funkce, která má být zavolána.Funkci set_terminate lze zavolat kdekoli v programu.Rutina terminate vždy volá poslední funkci, která byla předána jako argument funkci set_terminate.

Příklad

Následující příklad vyvolá výjimku typu char *, ale neobsahuje obslužnou rutinu určenou k zachytávání výjimek typu char *.Volání funkce set_terminate dává pokyn, aby funkce terminate zavolala funkci 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;
}

Výsledek

term_func was called by terminate.

Funkce term_func by měla ukončit program nebo aktuální vlákno, ideálně zavoláním funkce exit.Pokud k tomu nedojde a namísto toho přejde funkce zpět na volající funkci, je zavolána funkce abort.

Viz také

Referenční dokumentace

Zpracovávání výjimek v jazyce C++