670 ___ ___ ________________Часть IV. Новые возможности C++
ваш класс этого не делает, то тем самым он открывает канал утечки памяти, так как, потеряв указатель, вы не сможете в дальнейшем освободить связанный с ним блок памяти.
Задание собственного обработчика завершения
Если ваша программа генерирует исключительную ситуацию, а подходящий обработчик найти не удается вплоть до самой функции main о включительно, то программа по умолчанию завершается. Система останавливает выполнение программы и выводит на экран сообщение: "Abnormal program
termination .
Если подобное поведение вам не по вкусу, то его очень просто изменить. Когда программа не может найти соответствующий обработчик, она вызывает ФУНКЦИЮ terminate (). С ПОМОЩЬЮ фуНКЦИИ set_terminate^) ВЫ МОЖСТе
задать свою собственную процедуру terminate о (обработчик завершения), как показано в листинге 22.21.
// Необходимые заголовки ttinclude <stdlib.h> ftinclude <iostream.h> #include <except.h>
void MyTerminate() (
cout « "Вынужден сообщить вам, что исключительная ситуация" « "не может быть обработана.\п";
cout « "Я умываю руки...\п";
exit(-l) ;
}
void main() {
set_terminate(MyTerminate) ;
try {
throw "Неужели меня никто не перехватит?";
,} catch (int) { }
! Предупреждение
[Для получения доступа к^рототипу функции set_temiinate () необходимо ¦ включить в модуль заголовок except.h.