set_terminate
(CRT)
Instala sua própria rotina de terminação a ser chamada por terminate
.
Sintaxe
terminate_function set_terminate( terminate_function termFunction );
Parâmetros
termFunction
Ponteiro para uma função de encerramento que você escreve.
Valor retornado
Retorna um ponteiro para a função anterior registrada por set_terminate
, 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_terminate
instala termFunction
como a função chamada por terminate
. set_terminate
é usado com o manipulação de exceções C++ e pode ser chamado a qualquer momento em seu programa antes que a exceção seja lançada. terminate
chama abort
por padrão. Você pode alterar esse padrão escrevendo sua própria função de encerramento e chamar set_terminate
com o nome da sua função como seu argumento. terminate
chama a última função fornecida como um argumento para set_terminate
. Depois de executar qualquer tarefa de limpeza desejada, termFunction
deve sair do programa. Se ele não sair (se retornar ao chamador), abort
será chamado.
Em um ambiente multithreaded, funções de encerramento são mantidas separadamente para cada thread. Cada novo thread precisa instalar sua própria função de encerramento. Portanto, cada thread é responsável por sua própria manipulação de encerramento.
O tipo terminate_function
é definido em EH.H como um ponteiro para uma função de encerramento definida pelo usuário, termFunction
, que retorna void
. Sua função termFunction
personalizada não pode receber argumentos e não deve retornar ao chamador. Se isso acontecer, abort
será chamado. Uma exceção não pode ser lançada de dentro de termFunction
.
typedef void ( *terminate_function )( );
Observação
A função set_terminate
só funciona fora do depurador.
Há um único set_terminate
manipulador para todas as DLLs ou EXEs vinculadas dinamicamente; mesmo se você chamar set_terminate
seu manipulador pode ser substituído por outro, ou você pode estar substituindo um manipulador definido por outra DLL ou EXE.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
set_terminate |
<eh.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Confira o exemplo de terminate
.
Confira também
Rotinas de tratamento de exceções
abort
_get_terminate
set_unexpected
terminate
unexpected