Compartilhar via


set_unexpected (CRT)

Instala sua própria função de terminação a ser chamada por unexpected.

Sintaxe

unexpected_function set_unexpected( unexpected_function unexpFunction );

Parâmetros

unexpFunction
Ponteiro para uma função que você escreve para substituir a função unexpected.

Valor retornado

Retorna um ponteiro para a função de terminação anterior registrada por _set_unexpected, de modo que a função anterior possa ser restaurada posteriormente. Se nenhuma função anterior tiver sido definida, o valor retornado poderá ser usado para restaurar o comportamento padrão; esse valor pode ser NULL.

Comentários

A função set_unexpected instala unexpFunction como a função chamada por unexpected. unexpected não é usado na implementação atual de tratamento de exceções do C++. O tipo unexpected_function é definido em EH.H como um ponteiro para uma função inesperada definida pelo usuário, unexpFunction, que retorna void. Sua função personalizada unexpFunction não deve retornar ao chamador.

typedef void ( *unexpected_function )( );

unexpected chama terminate por padrão. Você pode alterar esse comportamento padrão escrevendo sua própria função de encerramento e chamar set_unexpected com o nome da sua função como seu argumento. unexpected chama a última função fornecida como um argumento para set_unexpected.

Diferentemente da função de encerramento personalizada instalada por uma chamada a set_terminate, uma exceção pode ser gerada do interior de unexpFunction.

Em um ambiente multithreaded, funções inesperadas são mantidas separadamente para cada thread. Cada novo thread precisa instalar sua própria função inesperada. Portanto, cada thread é responsável por sua própria manipulação de evento inesperado.

Na implementação atual da Microsoft de manipulação de exceções do C++, unexpected chama terminate por padrão e nunca é chamado pela biblioteca em tempo de execução de manipulação de exceção. Não há nenhuma vantagem particular em pagar unexpected em vez de terminate.

Há um único set_unexpected manipulador para todas as DLLs ou EXEs vinculadas dinamicamente; mesmo que você chame set_unexpected seu manipulador, pode ser substituído por outro ou que você está substituindo um manipulador definido por outra DLL ou EXE.

Requisitos

Rotina Cabeçalho necessário
set_unexpected <eh.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Confira também

Rotinas de tratamento de exceções
abort
_get_unexpected
set_terminate
terminate
unexpected