Junior — Middle
¿Cómo se manejan las excepciones dentro del constructor y cuáles son las características de este proceso?
sobes.tech AI
Respuesta de la IA
En C++, las excepciones lanzadas dentro del constructor se manejan de manera especial. Si ocurre una excepción en el constructor, el objeto se considera no creado y su destructor no se llama.
Características:
- La excepción lanzada en el constructor se pasa al código que lo llamó.
- Los miembros del objeto que ya fueron creados y están parcialmente inicializados serán destruidos correctamente (sus destructores se llamarán).
- El destructor del propio objeto no se llama, ya que el objeto no se considera completamente creado.
Ejemplo:
class MyClass {
public:
MyClass() {
// Si aquí se lanza una excepción
throw std::runtime_error("Error en el constructor");
}
~MyClass() {
// Este destructor no se llamará si se lanza una excepción en el constructor
}
};
int main() {
try {
MyClass obj;
} catch (const std::exception& e) {
std::cout << "Excepción capturada: " << e.what() << std::endl;
}
}
Por lo tanto, es importante tener en cuenta que, al lanzar una excepción en el constructor, el objeto no se crea y se deben manejar correctamente estas situaciones.