7-bob favqulotda holatni qayta ishlash


Konstruktor va destruktorlarda favqulotda holatlar



Download 50,84 Kb.
bet5/5
Sana18.07.2022
Hajmi50,84 Kb.
#818930
1   2   3   4   5
Bog'liq
7-Favqulotda holatni qayta ishlash

Konstruktor va destruktorlarda favqulotda holatlar

С++ tili konstruktor va destruktordan qiymat qaytarishga imkon bermaydi. Favqulotda holatlar mexanizmi obyekt konstruktori yoki destruktorida paydo bo’lgan xato haqida xabar berish imkoniyatiga ega. Misol uchun so’raladigan xotira chegaralangan Vector sinfini yaratamiz:


class Vector{
public:
class Size{}; // Favqulotda holat sinfi
enum {max = 32000}; // Vektor maksimal uzunligi
Vector(int n) // Konstruktor
{ if (n<0 || n>max) throw Size(); ... }

};
Vector sinfidan foydalanishda Size tipidagi favqulotda holatlarni ushlab qolish ko’zda tutilgan:
try{
Vector *р = new Vector(i);

}
catch(Vector::Size){
... // Vektor o’lchamidan xatoni qayta ishlash
}
Qayta ishlovchida xato va tiklash haqida xabarlarni berishning asosiy usullari standart jamlanmasi ishlatilishi mumkin. Favqulotda holatni aniqlovchi sinf ichida qayta ishlovchiga uzatiladigan favqulotda holat haqidagi ma’lumot saqlanishi mumkin. Bu texnikaning ma’nosi, xato haqidagi ma’lumotni xato topilgan nuqtadan xatoni qayta ishlash uchun yetarli imkoniyatlar bo’lgan joyga uzatishni ta’minlashdan iborat.
Agar obyekt konstruktorida favqulotda holat paydo bo’lsa, joriy momentiga bu blokda to’liq yaratilgan obyektlar uchun hamda obyektlar hisoblangan joriy obyekt ma’lumotlar maydonlari uchun va uning bazaviy sinflar uchun destruktorlar avtomatik chaqiriladi. Masalan, agar obyektlar massivlarni yaratishda favqulotda holat paydo bo’lsa, destruktorlar faqat muvaffaqiyatli yaratilgan elementlar uchun chaqiriladi.
Agar obyekr dinamik xotirada new amali yordamida bajarilsa va konstruktorda favqulotda holat paydo bo’lsa, obyekt uchun xotira to’g’ri ozod qilinadi.

Favqulotda holat shajaralari (iyerarxiyalari)


Favqulotda holatlar xos sinflardan foydalanish ma’lumotlar standart tiplarni qo’llashga qaraganda afzalroq. Sinflar yordamida favqulotda holat haqida ma’lumotni uzatish puxta tashkil etish, favqulotda holatlarni qayta ishlashni oson tabaqalashtirish mumkin, bundan tashqari, sinflar shajarasidan foydalanish imkoniyati paydo bo’ladi.


Favqulotda holatlarni boshqarish mexanizmi bazaviy sinf uchun qayta ishlovchini yaratishga imkon beradi, turdosh favqulotda holatlarni ko’pincha shajara ko’rinishida ifodalash mumkin. Umuman bazaviy sinfdan favqulotda holatlarni hosil qilib qayta ishlovchida polimorfizmdan foydalanib bazaviy sinfga murojaat yoki ko’rsatgichni ushlab qolish mumkin. Masalan, matematik kutubxonada sinflarni quyidagicha tashkil etish mumkin:
class Matherr{};
class Overflow: public Matherr{}; // To’lib ketish
class Underflow: public Matherr{}; // Tartib yo’qolishi
class ZeroDivide: public Matherr{}; // Nolga bo’lish
Kirish/chiqish xatolarini ifoda qilish uchun quyidagi sinflardan foydalanish mumkin:
class IOerr{};
class Readerr: public IOerr{}: // O’qish xatosi
class Writerr: public IOerr{}; // Yozish xatosi
class Seekerr: public IOerr{}; // Izlash xatosi
Sharoitga bog’liq ravishda hosilaviy favqulotda holatlarni ushlab (tutib) oladigan bazaviy sinf favqulotda holatlarini qayta ishlovchisini yoki hosila sinflar xos qayta ishlovchilaridan foydalanish mumkin.
C++ ning amallar yoki funksiyalari bilan hosil qilinuvchi qator standart favqulotda holatlari mavjud. Ularning barchasi sarlavha faylida tasvirlangan exception kutubxona sinfining hosilalari hisoblanadi. Masalan, new amali muvaffaqiyatsiz xotira ajratilganda bad_alloc tipidagi favqulotda holatni paydo qiladi.
Dasturchi standartlardan hosilalar bo’lgan xos favqulotda holatlarni aniqlashi mumkin.

Download 50,84 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish