Typedef <exception>
exception_ptr
Tipo che descrive un puntatore a un'eccezione.
typedef unspecified exception_ptr;
Osservazioni:
Classe interna non specificata utilizzata per implementare il tipo exception_ptr
.
Utilizzare un oggetto exception_ptr
per fare riferimento all'eccezione corrente o a un'istanza di un'eccezione definita dall'utente. Nell'implementazione Microsoft, un'eccezione è rappresentata da una struttura EXCEPTION_RECORD. Ogni oggetto exception_ptr
include un campo di riferimento all'eccezione che punta a una copia della struttura EXCEPTION_RECORD
che rappresenta l'eccezione.
Quando si dichiara una variabile exception_ptr
, la variabile non è associata ad alcuna eccezione. Ciò significa che il campo di riferimento all'eccezione è NULL. Questo oggetto exception_ptr
è denominato null exception_ptr.
Utilizzare la funzione current_exception
o make_exception_ptr
per assegnare un'eccezione a un oggetto exception_ptr
. Quando si assegna un'eccezione a una variabile exception_ptr
, il campo di riferimento all'eccezione punta a una copia dell'eccezione. Se la memoria disponibile non è sufficiente per consentire la copia dell'eccezione, il campo di riferimento all'eccezione punta a una copia di un'eccezione std::bad_alloc. Se la current_exception
funzione o make_exception_ptr
non può copiare l'eccezione per qualsiasi altro motivo, la funzione chiama la terminate
funzione CRT per uscire dal processo corrente.
Malgrado il nome, un oggetto exception_ptr
non è un puntatore. Non obbedisce alla semantica dei puntatori e non può essere usato con gli operatori di accesso ai membri del puntatore (->
) o gli operatori di riferimento indiretto (*). L'oggetto exception_ptr
non dispone di membri dati pubblici o di funzioni membro.
Confronti:
È possibile usare gli operatori uguale (==
) e non uguale (!=
) per confrontare due oggetti exception_ptr
. Gli operatori non confrontano il valore binario (schema di bit) delle strutture EXCEPTION_RECORD
che rappresentano le eccezioni. Viceversa, gli operatori confrontano gli indirizzi del campo di riferimento all'eccezione degli oggetti exception_ptr
. Di conseguenza, l'elemento exception_ptr
Null e il valore NULL vengono considerati uguali.
terminate_handler
Il tipo descrive un puntatore a una funzione che è possibile utilizzare come terminate_handler
.
typedef void (*terminate_handler)();
Osservazioni:
Il tipo descrive un puntatore a una funzione che è possibile utilizzare come gestore di terminazione.
Esempio
Per un esempio dell'utilizzo di terminate_handler
, vedere set_terminate.
unexpected_handler
Il tipo descrive un puntatore a una funzione che è possibile usare come unexpected_handler
.
typedef void (*unexpected_handler)();
Esempio
Per un esempio dell'utilizzo di unexpected_handler
, vedere set_unexpected.