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