2010-03-14 21 views

Respuesta

10

creo que la sintaxis es como this (a pesar de que es mejor coger cosas de la persona que llama. Y ¿qué vas a hacer una vez que lo atrapó?)

Bar::Bar() 
try 
    : Foo(1) 
{ 
} 
catch(const SomeException &e) 
{ 
} 
+5

Whoa, ese es un código de aspecto extraño. –

+3

Tenga en cuenta que esto no se puede utilizar para ignorar la excepción. Si el bloque 'catch' no arroja una excepción por sí mismo, la excepción original se vuelve a lanzar automáticamente (Vea el enlace GOTW para más detalles). – sth

+0

@sth: seguro que puede, simplemente 'devolver'. – Potatoswatter

1

Creo que esto debe ser capturado por el procedimiento de creación del objeto.

6

C++ tiene un mecanismo para hacer Entonces, pero rara vez se usa. Es el bloque de función intento:

Bar::Bar() 
try 
    : Foo(1) 
{ 
} 
catch(Something) 
{ 
} 

ver este clásico gotw, lo que explica por qué sólo se debe utilizar para traducir excepciones (por ejemplo, tipo de excepción se convierte en FooException BarException).

+1

Siempre captar una referencia. – Potatoswatter

0

Considere reemplazar la instancia problemática con un boost::optional. Entonces puede diferir su inicialización en el cuerpo del constructor.

Cuestiones relacionadas