1-ma’ruza C++ da Sinflar va obyektlar. Konstruktor va destruktor. Sinf usullari reja


Download 86.61 Kb.
bet18/23
Sana09.06.2023
Hajmi86.61 Kb.
#1472539
1   ...   15   16   17   18   19   20   21   22   23
Bog'liq
Algoritmlashga kirish fanidan majmua

5.2. Istisnolarni qayta ishlash
Dastur istisno xolatni ko‘rishdan va unga javob berishdan oldin istisno xolatni aniqlovchi C++dagi try operatorini ishlatish lozim. Istisnolarni generatsiya qila oladigan kod bloki try kalit-so‘z bilan boshlanadi va shakldor qavslar ichiga olinadi.
Agar try blok ichida istisnoni topib olsa, dasturiy uzilish sodir bo‘ladi xamda quyidagi xatti-harakatlar ketma-ketligi bajariladi:
1. Dastur istisnoga ishlov bergichning to‘g‘ri keladiganini qidiradi.
2. Agar ishlov bergich topilsa, stek tozalanadi va boshqaruv istisnolarga ishlov bergichga uzatiladi.
3. Agar ishlov bergich topilmagan bo‘lsa, ilovani tugatish uchun terminate funksiyasi chaqiriladi.
Yuzaga kelgan istisnoga ishlov beruvchi kod bloki catch kalit-so‘z bilan boshlanadi va shakldor qavs ichiga olinadi. Istisnoga ishlov bergichning kamida bitta kod bloki bevosita try blokining ortidan kelishi kerak. Dastur generatsiya qilishi
mumkin bo‘lgan har bir istisno uchun o‘z ishlov bergichi ko‘zda tutilgan bo‘lishi kerak.
Istisnolarga ishlov bergichlar navbatma-navbat ko‘rib chiqiladi xamda turi bo‘yicha catch operatoridagi argument (dalil) turiga to‘qg‘ri keladigan istisnoga ishlov bergich tanlab olinadi. Ishlov bergich tanasida goto operatorlari bo‘lmagan taqdirda, berilgan try bloki istisnolariga ishlov bergichning oxirgisidan keyin kelgan
nuqtadan boshlab dasturning bajarilishi yana davom etadi.
Masalan, file_sopy funksiyani chaqirishda quyidagi try operatori istisno xolatni aniqlash imkonini beradi:
try
{ file_copy("SOURCE.ТХТ", "TARGET.ТХТ") ;
};
Qanday istisno xolat ro‘y berganini aniqlash uchun try operatordan so‘ng dastur bitta yoki bir nechta catch operatorlarni joylashtirish lozim:
catch (file_open_error)
{
cerr << "boshlangich yoki maqsadli faylni ochish xatoligi"<< endl;
exit(1);
}
Bu xolda xato tipiga qaramasdan kod xabardor qiladi va dasturni tugatadi. Agarda funksiyaning chaqiruvi xatosiz bajarilgan va istisno xatolar aniqlanmagan bo‘lsa C++ catch operatorini shunchaki etiborga olmaydi.
Qayta ishlovchilar tartibi muximdir.
try {
100
// ...
}
catch (ibuf) { // kiritish buferi to‘lishini qayta ishlash
}
catch (io) { // kiritish – chiqarish xatoligini qayta ishlash
}
catch (stdlib) { // bibliotekadagi istisno xolatni qayta ishlash
}
catch (...) { // qolgan xamma istisnolarni qayta ishlash
}

Download 86.61 Kb.

Do'stlaringiz bilan baham:
1   ...   15   16   17   18   19   20   21   22   23




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling