Typedefs <exception>
exception_ptr
Um tipo que descreve um ponteiro para uma exceção.
typedef unspecified exception_ptr;
Comentários
Uma classe interna não especificada que é usada para implementar o tipo exception_ptr
.
Use um objeto exception_ptr
para fazer referência à exceção atual ou a uma instância de uma exceção especificada pelo usuário. Na implementação da Microsoft, uma exceção é representada por uma estrutura EXCEPTION_RECORD. Cada objeto exception_ptr
inclui um campo de referência de exceção que aponta para uma cópia da estrutura EXCEPTION_RECORD
que representa a exceção.
Quando você declara uma variável exception_ptr
, ela não é associada a nenhuma exceção. Isto é, o campo de referência de exceção é NULL. Esse objeto exception_ptr
é chamado de null exception_ptr.
Use a função current_exception
ou make_exception_ptr
para atribuir uma exceção a um objeto exception_ptr
. Quando você atribui uma exceção a uma variável exception_ptr
, o campo de referência de exceção da variável aponta para uma cópia da exceção. Se não houver memória suficiente para copiar a exceção, o campo de referência de exceção apontará para uma cópia de uma exceção std::bad_alloc. Se a função current_exception
ou make_exception_ptr
puder copiar a exceção por qualquer outro motivo, a função chamará a função CRT terminate
para sair do processo atual.
Apesar do nome, um objeto exception_ptr
não é, em si, um ponteiro. Ele não obedece à semântica do ponteiro e não pode ser usado com o acesso do membro do ponteiro (->
) ou operadores (*) de indireção. O objeto exception_ptr
não tem membros de dados públicos ou funções de membro.
Comparações:
Você pode usar os operadores igual (==
) e diferente (!=
) para comparar dois objetos exception_ptr
. Os operadores não comparam o valor binário (padrão de bit) das estruturas EXCEPTION_RECORD
que representam as exceções. Em vez disso, os operadores comparam os endereços no campo de referência de exceção dos objetos exception_ptr
. Consequentemente, um exception_ptr
nulo e o valor NULL são comparados como iguais.
terminate_handler
O tipo descreve um ponteiro para uma função adequada para uso como um terminate_handler
.
typedef void (*terminate_handler)();
Comentários
O tipo descreve um ponteiro para uma função adequada para uso como um manipulador de finalização.
Exemplo
Consulte set_terminate para obter um exemplo do uso de terminate_handler
.
unexpected_handler
O tipo descreve um ponteiro para uma função adequada para uso como um unexpected_handler
.
typedef void (*unexpected_handler)();
Exemplo
Consulte set_unexpected para obter um exemplo do uso de unexpected_handler
.