Junior — Middle
İnşaatçı daxilində istisnalar necə işlənir və bu prosesin xüsusiyyətləri nələrdir?
sobes.tech Süni İntellekt
AI-dan cavab
C++-də, konstruktor daxilində atılan istisnalar xüsusi şəkildə idarə olunur. Əgər konstruktor daxilində istisna baş verərsə, obyekt yaradılmamış sayılır və onun destruktoru çağrılmır.
Xüsusiyyətlər:
- Konstruktor daxilində atılan istisna çağıran koduna ötürülür.
- Artıq yaradılmış və qismən başlanğıc verilmiş obyekt üzvləri düzgün şəkildə məhv edilir (onların destruktorları çağrılır).
- Ob'ektin özü destruktoru çağrılmır, çünki obyekt tam olaraq yaradılmamış sayılır.
Nümunə:
class MyClass {
public:
MyClass() {
// Əgər burada istisna atılırsa
throw std::runtime_error("Konstruktor xətası");
}
~MyClass() {
// Bu destruktor, konstruktor daxilində istisna atılsa çağrılmayacaq
}
};
int main() {
try {
MyClass obj;
} catch (const std::exception& e) {
std::cout << "Yekun istisna: " << e.what() << std::endl;
}
}
Beləliklə, qeyd etmək vacibdir ki, konstruktor daxilində istisna atıldıqda, obyekt yaradılmır və bu vəziyyətlər düzgün şəkildə idarə olunmalıdır.