Поделиться через


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 или EXE; даже при вызове set_unexpected обработчик может быть заменен другим или можно заменить обработчик с помощью других DLL или EXE.

Требования

Подпрограмма

Обязательный заголовок

set_unexpected

<eh.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Процедуры обработки исключений

abort

_get_unexpected

set_terminate (CRT)

terminate (CRT)

unexpected (CRT)