namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:set_unexpected

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

kennen:lib:set_unexpected [2012-04-11 17:24] (aktuell)
Zeile 1: Zeile 1:
 +====== set_unexpected() ======
 +''#​include''​ [[..:​include:​exception]]
 +
 +<code cpp>
 +unexpected_handler set_unexpected (unexpected_handler handler) ​
 +</​code>​
 +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:
 +  * eine Ausnahme des Anwendungsprogramm werfen,
 +  * eine ''​bad_exception''​-Ausnahme werfen,
 +  * ''​terminate()''​ aufrufen,
 +  * ''​abort()''​ oder ''​exit()''​ aufrufen.
 +==== Parameter ====
 +| ''​handler''​ | Adresse einer Funktion |
 +Die Funktion muss folgenden Typ besitzen:
 +
 +<code cpp>
 +typedef void (*unexpected_handler) ();
 +</​code>​
 +==== Ergebnis ====
 +Rückgabewert:​ die Adresse der bisherigen Behandlungsroutine.
 +
 +==== Siehe auch ====
 +[[unexpected]].
 +
 +==== Beispiel ====
 +<code cpp set_unexpected.cpp>​
 +#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;
 +}
 +</​code>​
  
kennen/lib/set_unexpected.txt · Zuletzt geändert: 2012-04-11 17:24 (Externe Bearbeitung)