Ausnahmen, die während der Initialisierung von globalen Objekten „geworfen“ werden (throw), bedingen den Aufruf von terminate und den Abbruch des Programms ohne Diagnosemeldungen. Mit der Funktion set_terminate können Sie eine Funktion vorsehen, die im Fall eines unvorgesehenen Programmendes als Ausnahmebehandlungsroutine fungiert. Diese Funktion muss jedoch vor der Initialisierung der globalen Objekte aufgerufen werden.
Das C++-Laufzeitsystem bietet folgende Lösung an, um Funktionen anzugeben, die als „initial current handler“ benutzt werden:
Sie können eine eigene
__initial_terminate_handler-Funktion vom Typterminate_handlerzu Ihrem Programm binden. Diese Funktion wird im C++-Laufzeitsystem alsweakdeklariert. Wenn__initial_terminate_handlerdefiniert ist, wird die Funktion als „initial handler“ für die Ausnahmebehandlung aufgerufen.Sie können auch die Funktionen
__initial_unexpected_handlerund___initial_new_handlermit demselben Mechanismus verwenden. Diese Routinen haben den Typunexpected_handlerbzw.new_handler.
Für die Schnittstellen __initial_terminate_handler und __initial_unexpected_handler muss die Header-Datei <exception> inkludiert werden, für die Schnittstelle __initial_new_handler die Header-Datei <new>.