#include
<exception>
unexpected_handler set_unexpected (unexpected_handler handler)
Hinterlegt einen Verweis auf die Funktion, die aufzurufen ist, wenn eine unerwartete Ausnahme ausgelöst wurde.
Ein unexpected_handler
sollte eine der folgenden Aktionen ausführen:
bad_exception
-Ausnahme werfen,terminate()
aufrufen,abort()
oder exit()
aufrufen. handler | Adresse einer Funktion |
Die Funktion muss folgenden Typ besitzen:
typedef void (*unexpected_handler) ();
Rückgabewert: die Adresse der bisherigen Behandlungsroutine.
#include <exception> #include <iostream> void notstand() { std::cerr << "... wird es auch schief gehen." << endl; throw bad_exception(); } class X {}; class U {}; void harmlos() throw(U) // wirklich ??? { throw X(); } int main() { std::unexpected_handler old = std::set_unexpected(notstand); try { std::cout << "Was schiefgehen kann, ..." << std::endl; harmlos(); unexpected(); } catch(bad_exception& ) { std::cerr << "\t(Murphy's Gesetz)\n"; } catch(...) { std::cerr << "...und zwar anders, als man erwartet.\n"; } return 0; }