Compartilhar via


set_unexpected (CRT)

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

unexpected_function set_unexpected(
   unexpected_function unexpFunction 
);

Parâmetros

  • unexpFunction
    Ponteiro para uma função que você grave para substituir a função de unexpected .

Valor de retorno

Retorna um ponteiro para a função previous de término registrada por _set_unexpected de forma que a função anterior pode ser restaurados posteriormente. Se nenhuma função anterior foi definida, o valor de retorno pode ser usado para restaurar o comportamento padrão; esse valor pode ser NULL.

Comentários

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

typedef void ( *unexpected_function )( );

Por padrão, chamadas terminatede unexpected . Você pode alterar este comportamento padrão escrevendo sua própria função de término e chamando set_unexpected com o nome da função como seu argumento. unexpected chama a função last especificada como um argumento para set_unexpected.

Ao contrário da função personalizada de término instalada por uma chamada a set_terminate, uma exceção pode ser gerada a partir de unexpFunction.

Em um ambiente multithread, as funções inesperadas são mantidas separadamente para cada thread. Necessidades de cada thread de instalar novos sua própria função inesperada. Assim, cada thread é responsável de sua própria manipulação de forma inesperada.

Na implementação atual da Microsoft na manipulação de exceção C++, unexpected chama terminate por padrão e nunca for chamado pela biblioteca de tempo de execução manipulação de exceções gerais. Não há nenhuma vantagem específico para chamar unexpected em vez de terminate.

Há um único manipulador de set_unexpected para todas as dlls ou Execuções dinamicamente vinculado; mesmo se você chamar set_unexpected seu manipulador pode ser substituído por outro ou se você estiver substituindo um manipulador definido por outro DLL ou por um EXE.

Requisitos

Rotina

Cabeçalho necessário

set_unexpected

<eh.h>

Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.

Equivalência do .NET Framework

Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de chamadas de plataformas.

Consulte também

Referência

Rotinas do tratamento de exceções

abort

_get_unexpected

set_terminate (CRT)

terminate (CRT)

unexpected (CRT)