Junior — Middle
Quruvchining ichida istisnolar qanday ishlanadi va bu jarayonning xususiyatlari qanday?
sobes.tech AI
AIdan javob
C++ da, konstruktor ichida tashlangan istisnolar maxsus tarzda boshqariladi. Agar konstruktor ichida istisno yuz bersa, ob'ekt yaratilmagan hisoblanadi va uning destruktori chaqirilmaydi.
Xususiyatlar:
- Konstruktor ichida tashlangan istisno chaqiruvchiga uzatiladi.
- Allaqachon yaratilgan va qisman boshlang'ich holatda bo'lgan ob'ekt a'zolari to'g'ri yo'q qilinadi (ularning destruktorlari chaqiriladi).
- Ob'ektning o'zi destruktori chaqirilmaydi, chunki ob'ekt to'liq yaratilmagan hisoblanadi.
Misol:
class MyClass {
public:
MyClass() {
// Agar bu yerda istisno tashlansa
throw std::runtime_error("Konstruktor xatosi");
}
~MyClass() {
// Agar konstruktor ichida istisno tashlangan bo'lsa, bu destruktor chaqirilmaydi
}
};
int main() {
try {
MyClass obj;
} catch (const std::exception& e) {
std::cout << "Qabool qilingan istisno: " << e.what() << std::endl;
}
}
Shuning uchun, konstruktor ichida istisno tashlashda, ob'ekt yaratilmaydi va bu holatlarni to'g'ri boshqarish muhimdir.