Consideriamo che potrebbe verificarsi un'eccezione nell'inizializzazione. Quindi scriviamo try/catch block.Come funziona la lista di inizializzazione try/catch?
int f(){
throw 1;
}
class A
{
public:
A() try : _k(f())
{}
catch (int)
{
std::cout << "Exception 1" << std::endl;
}
private:
int _k;
};
Ma l'eccezione di rilancio su un livello più in profondità. Quello significa che il codice successivo
try
{
A a;
} catch(int)
{
std::cout << "Exception 2" << std::endl;
}
uscita volontà:
Exception 1
Exception 2
Perchè questo blocco try/catch non si comporta allo stesso modo di ordinaria blocco try/catch?
codice completo esempio: http://ideone.com/XjY2d
Come nota: si ripassa automaticamente se non si butta per uscire dal blocco "catch". –