O‘zbekiston respublikasi oliy va o‘rta maxsus ta’lim vazirligi tоshkеnt dаvlаt iqtisоdiyot universitеti


Download 1.96 Mb.
Pdf ko'rish
bet58/83
Sana08.11.2023
Hajmi1.96 Mb.
#1757524
1   ...   54   55   56   57   58   59   60   61   ...   83
Bog'liq
Obyektga yo`naltirilgan dasturlash tillari

12.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. 


99 
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 1.96 Mb.

Do'stlaringiz bilan baham:
1   ...   54   55   56   57   58   59   60   61   ...   83




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