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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.