2012-07-20 56 views

Respuesta

10

Es función intentar bloquear. Útil solo en c-tor para errores de captura en constructores de clases derivadas. Puede leer más acerca de esta característica en el estándar, por ejemplo n3337 draft par. 15, 15.1.

4 Una función probar-bloque asociados un manejador-Seq con el ctor-inicializador, si está presente, y el compuesto-declaración. Una excepción lanzada durante la ejecución de la instrucción compuesta o, para constructores y destructores , durante la inicialización o destrucción , respectivamente, de los subobjetos de la clase, transfiere el control a un controlador en una función-try-block en el mismo manera como una excepción lanzada durante la ejecución de un control Try-Block de transferencias a otros controladores. [Ejemplo:

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 ejemplo]

+1

Consulte http://www.drdobbs.com/introduction-to-function-try-blocks/184401297 para obtener una explicación y justificación más exhaustiva. – pmr

+0

wow ... nunca antes visto ... gracias por la respuesta – PermanentGuest

+0

@PermanentGuest esta característica se usa con poca frecuencia, ya que al final de tu bloque catch la excepción se volverá a lanzar, si no lanzas ninguna otra excepción. function-try-block no puede aceptar la excepción. – ForEveR

0

Se atrapa excepciones lanzadas desde un constructor cuando se crea un objeto miembro. Una de las respuestas a la pregunta que mencionó contiene un enlace que explica los detalles: http://www.gotw.ca/gotw/066.htm.

Cuestiones relacionadas