Функции обработки неопознанного исключения: unexpected() и set_unexpected()

   
На этом шаге мы рассмотрим возможности функций unexpected() и set_unexpected().

   
Функция void unexpected() вызывается, когда некоторая функция порождает исключение, отсутствующее в списке ее исключений. В свою очередь функция
unexpected() по умолчанию вызывает функцию, зарегистрированную пользователем с помощью set_unexpected(). Если такая функция отсутствует, unexpected() вызывает terminate().
Функция unexpected() не возвращает значения, однако может сама порождать исключения.

   
Функция set_unexpected() позволяет установить функцию, определяющую реакцию программы на неизвестное исключение. Эти действия определяются в функции, которая ниже поименована как
unexpected_func(). Указанная функция специфицируется как функция типа unexpected_function. Этот тип определен в файле except.h как указатель на функцию без параметров, не возвращающую значения:

    typedef void   (*unexpected_function)();
    unexpected_function  set_ unexpected(unexpected_function unexpected_func);

   
По умолчанию, неожиданное (неизвестное для функции) исключение вызывает функцию unexpected(), которая, в свою очередь вызывает либо
unexpected_func() (если она определена), либо terminate() (в противном случае).

   
Функция set_unexpected() возвращает указатель на функцию, которая была установлена с помощью set_unexpected() ранее. Устанавливаемая функция (unexpected_func) обработки
неизвестного исключения не должна возвращать управление вызвавшей ее функции unexpected(). Попытка возврата приведет к неопределенным результатам.

   
Кроме всего прочего, unexpected_func() может вызывать функции abort(), exit() и terminate().

   
На следующем шаге мы рассмотрим глобальные переменные, относящиеся к исключениям.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий