Junior — Middle
Proqramda ikiqat istisnaların yaranmasının qarşısını almaq üçün hansı yollar var?
sobes.tech Süni İntellekt
AI-dan cavab
İkiqat istisnalar (double exceptions) bir istisna işlənərkən başqa bir istisna atıldıqda baş verir və bu, proqramın bağlanmasına və ya std::terminate çağırılmasına səbəb ola bilər.
Bunu qarşısını almaq üçün:
- Destructorlardan istisna atmayın. Əgər destructor istisna işlənərkən çağırılırsa, yeni istisna
std::terminate-ə səbəb olacaq. - Destructorlar daxilində try-catch bloklarından istifadə edin, istisnaları tutmaq və idarə etmək üçün, onları xaricə çıxmamaq üçün.
- İstisnaları istisna işləyən funksiyalardan atmaqdan çəkinin.
- İstisna atılmaması lazım olan funksiyalar üçün
noexceptistifadə edin.
Təhlükəsiz destructor nümunəsi:
~MyClass() noexcept {
try {
// istisna ata biləcək kod
} catch (...) {
// istisna ilə işləmə, məsələn, qeydiyyat
}
}
Əsas açar, digər istisnalar işlənərkən, xüsusən destructorlardan, istisna atılmasının qarşısını almaqdır.