Sobes.tech
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.