2012-07-20 29 views

risposta

10

È la funzione try block. Utile solo in c-tors per errori di cattura nei costruttori di classi derivate. Puoi leggere ulteriori informazioni su questa funzione in standard, ad esempio par. 15, 15.1.

4 A function-try-block associa un gestore-seq con il ctor-inizializzatore, se presente, e il composto con istruzioni. Un'eccezione generata durante l'esecuzione dell'istruzione composta o, per i costruttori e i distruttori , durante l'inizializzazione o la distruzione , rispettivamente, dei sottooggetti della classe, trasferisce il controllo a un gestore in un blocco funzione-try nello stesso come un'eccezione generata durante l'esecuzione di un controllo di trasferimento try-block ad altri gestori. [Esempio:

int f(int); 
class C { 
int i; 
double d; 
public: 
C(int, double); 
}; 
C::C(int ii, double id) 
try : i(f(ii)), d(id) { 
// constructor statements 
} 
catch (...) { 
// handles exceptions thrown from the ctor-initializer 
// and from the constructor statements 
} 

-end esempio]

+1

Vedere http://www.drdobbs.com/introduction-to-function-try-blocks/184401297 per una spiegazione più approfondita e logica. – pmr

+0

wow .. mai visto prima ... grazie per la risposta – PermanentGuest

+0

@PermanentGuest questa funzione viene usata raramente, dato che alla fine del tuo blocco catch verrà ripristinata l'eccezione, se non fai qualche altra eccezione. function-try-block non può accettare l'eccezione. – ForEveR

0

Raggiunge eccezioni generate da un costruttore quando si crea un oggetto membro. Una delle risposte alla domanda che hai citato contiene un link che spiega i dettagli: http://www.gotw.ca/gotw/066.htm.