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]
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)