Sdílet prostřednictvím


Neošetřené výjimky C++

Pokud odpovídající popisovač (nebo elipsy úlovku popisovač) nelze nalézt aktuální výjimky předdefinované terminate spuštění funkce je volána.(Můžete také explicitně volat terminate v žádné vaše obslužné rutiny.) Výchozí akce terminate , je volání abort.Chcete-li terminate volání některé další funkce v programu před ukončením aplikace, volání set_terminate s názvem funkce volané jako její jediný argument funkce.Můžete volat set_terminate bodu v programu.terminate Rutina volá vždy uveden jako argument funkci poslední set_terminate.

Příklad

V následujícím příkladu vyvolá char * výjimku, ale neobsahuje popisovač určený k zachycení výjimek typu char *.Volání set_terminate pokyn terminate volání 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.

term_func Funkce měla ukončit program nebo aktuální podproces v ideálním případě voláním exit.Pokud není a místo toho vrátí jeho volajícímu abort se nazývá.

Viz také

Referenční dokumentace

Zpracování výjimek v C++