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


 Istisno xolatning ma’lumotlar elementlaridan foydalanish


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

12.5. Istisno xolatning ma’lumotlar elementlaridan foydalanish
Yuqorida ko‘rib o‘tilgan misollarda dastur, catch operatordan foydalanib
qanday istisno xolat ro‘y berganini va ularga tegishli xolda javob berishini imkonini 
beradi. Masalan, file_open_error istisno xolatda dastur xatoni chaqiruvchi fayl 
nomini bilish lozim. Istisno xolatga tegishli shunday ma’lumotni saqlash uchun 
dastur istisno xolat sinfiga ma’lumotlar elementlarini qo‘shish. Agar keyinchalik 
dastur istisno xolatni yuzaga keltirsa, u ushbu ma’lumotni, quyida ko‘rsatilgandek, 
istisno xolatiga ishlov beruvchi funksiyaga o‘zgaruvchi sifatida uzatadi: 
throw file_open_error(source); 
throw file_read_error(344); 
Istisno xolatga ishlov berishda bu parametrlar sinfga tegishli o‘zgaruvchilarga 
o‘zlashtirilishi mumkin (konstruktorga o‘xshaydi). Masalan, sinfning tegishli 
o‘zgaruvchisiga xatoga yo‘l qo‘ygan faylni ismini o‘zlashtirish uchun quyidagi 
operatorlar file_open_error istisno xolatni o‘zgartiradi: 
class file_open_error


102 
{ public: 
file_open_error(char *filename) { strcpy(file_open_error::filename, filename); } 
char filename[255] ; }; 
12.6. Istisno xolatlar va sinflar 
Sinf yaratishda shu sinfga tegishli istisno xolatlarni aniqlash mumkin. Aniq 
sinfga tegishli istisno xolatni yaratish uchun ushbu istisno xolatni sinfning umumiy 
(public) elementlari sifatida kiritish zarur.
Masalan diapazon chegarasidan chiquvchi indeks qiymatini bilish zarur bo‘lsin: 
class Vector { 
// ... 
public: 
class Range { 
public: 
int index; 
Range(int i) : index(i) { } 
}; 
// ... 
int& operator[](int i) 
// ... 
}; 
int Vector::operator[](int i) 

if (o<=i && i throw Range(i); 

Mumkin bo‘lmagan indeks qiymatini bilish uchun istisno xolatni tasvirlovchi 
obyektga nom berish kerak: 
void f(Vector& v) 


103 

// ... 
try { 
do_something(v); 

catch (Vector::Range r ) { 
cerr << "mumkin bo‘lmagan indeks" << r.index << '\n'; 
// ... 

// ... 

Download 1.96 Mb.

Do'stlaringiz bilan baham:
1   ...   56   57   58   59   60   61   62   63   ...   83




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