set_unexpected
(CRT)
Устанавливает собственную функцию завершения, которая будет вызываться 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