Partilhar via


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.