Consideramos que puede producirse una excepción en la inicialización. Así que escribimos try/catch block.¿Cómo funciona el try/catch en la lista de inicialización?
int f(){
throw 1;
}
class A
{
public:
A() try : _k(f())
{}
catch (int)
{
std::cout << "Exception 1" << std::endl;
}
private:
int _k;
};
Pero la captura vuelve a lanzar la excepción en un nivel más profundo. Eso significa que el próximo código
try
{
A a;
} catch(int)
{
std::cout << "Exception 2" << std::endl;
}
la Salida:
Exception 1
Exception 2
¿Por qué este bloque try/catch no se comporta de la misma manera que ordinaria bloque try/catch?
ejemplo de código completo: http://ideone.com/XjY2d
Como nota: solo se vuelve a lanzar automáticamente si no te arrojas para salir del bloque 'catch'. –