Junior — Middle
Hoe worden uitzonderingen binnen de constructor afgehandeld en wat zijn de kenmerken van dit proces?
sobes.tech AI
Antwoord van AI
In C++ worden uitzonderingen die binnen de constructor worden geworpen op een speciale manier afgehandeld. Als er een uitzondering optreedt in de constructor, wordt het object als niet gemaakt beschouwd en wordt de destructor niet aangeroepen.
Kenmerken:
- De in de constructor geworpen uitzondering wordt doorgegeven aan de aanroepende code.
- De leden van het object die al zijn gemaakt en gedeeltelijk geïnitialiseerd, worden correct vernietigd (hun destructors worden aangeroepen).
- De destructor van het object zelf wordt niet aangeroepen, omdat het object niet als volledig gemaakt wordt beschouwd.
Voorbeeld:
class MyClass {
public:
MyClass() {
// Als hier een uitzondering wordt geworpen
throw std::runtime_error("Fout in de constructor");
}
~MyClass() {
// Deze destructor wordt niet aangeroepen als er een uitzondering wordt geworpen in de constructor
}
};
int main() {
try {
MyClass obj;
} catch (const std::exception& e) {
std::cout << "Opgevangen uitzondering: " << e.what() << std::endl;
}
}
Het is dus belangrijk om te onthouden dat, wanneer een uitzondering wordt geworpen in de constructor, het object niet wordt gemaakt, en dergelijke situaties correct moeten worden afgehandeld.