Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Устанавливает собственную функцию завершения, которая будет вызываться unexpected.
Синтаксис
unexpected_function set_unexpected( unexpected_function unexpFunction );
Параметры
unexpFunction
Указатель на пользовательскую функцию, которая заменит функцию unexpected.
Возвращаемое значение
Возвращает указатель на предыдущую функцию завершения, зарегистрированную с помощью _set_unexpected, чтобы предыдущую функцию можно было впоследствии восстановить. Если предыдущая функция не задана, возвращаемое значение может использоваться для восстановления поведения по умолчанию; это значение может быть NULL.
Замечания
Функция set_unexpected устанавливает unexpFunction как функцию, вызываемую функцией unexpected. unexpected не используется в текущей реализации обработки исключений C++. Тип unexpected_function определен в файле EH.H как указатель на определенную пользователем непредвиденную функцию, unexpFunction, возвращающую значение void. Пользовательская unexpFunction функция не должна возвращаться вызывающей функции.
typedef void ( *unexpected_function )( );
По умолчанию unexpected вызывает функцию terminate. Это поведение по умолчанию можно изменить, создав собственную функцию завершения и вызвав функцию set_unexpected с именем этой функции в качестве аргумента. unexpected вызывает последнюю функцию, заданную в качестве аргумента для функции set_unexpected.
В отличие от пользовательской функции завершения, установленной с помощью вызова set_terminate, исключение может быть вызвано из функции unexpFunction.
В многопоточной среде непредвиденные функции поддерживаются отдельно для каждого потока. Каждый новый поток требует установки собственной непредвиденной функции. Таким образом, каждый поток отвечает за собственную обработку непредвиденных функций.
В текущей реализации обработчика исключений C++ Майкрософт unexpected вызывает terminate по умолчанию и никогда не вызывается из библиотеки времени выполнения для обработки исключений. Нет особых преимуществ для вызова unexpected , а не terminate.
Существует один set_unexpected обработчик для всех динамически связанных библиотек DLL или EXEs, даже если вы вызываете set_unexpected обработчик, может быть заменен другим или заменить обработчик, заданный другой библиотекой DLL или EXE.
Требования
| Маршрут | Обязательный заголовок |
|---|---|
set_unexpected |
<eh.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Процедуры обработки исключений
abort
_get_unexpected
set_terminate
terminate
unexpected