O. X. Azamatov


 Istisnolarni qayta ishlash



Yüklə 1,82 Mb.
Pdf görüntüsü
səhifə88/119
tarix31.12.2021
ölçüsü1,82 Mb.
#49500
1   ...   84   85   86   87   88   89   90   91   ...   119
3072-Текст статьи-7829-1-10-20200908

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 
                } 

Yüklə 1,82 Mb.

Dostları ilə paylaş:
1   ...   84   85   86   87   88   89   90   91   ...   119




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin