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