Compartilhar via


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