Raqamli texnologiyalar fakulteti dasturiy injiniring yo’nalishi


Exception sinfining avlod bo'lgan o'zingizning istisno sinflaringizni yaratish



Download 1,57 Mb.
bet55/81
Sana23.06.2022
Hajmi1,57 Mb.
#695199
1   ...   51   52   53   54   55   56   57   58   ...   81
Bog'liq
Dasturiy injiniring Dasturlash 2-4

Exception sinfining avlod bo'lgan o'zingizning istisno sinflaringizni yaratish. Albatta, siz istisno sinfining avlodi sifatida o'zingizning istisno sinflaringizni yaratishingiz va virtual konstanta what() usulini bekor qilishingiz mumkin. Mana yuqoridagi dastur, lekin ArrayException klassi bilan exception istisnosi:

#include


#include
#include

class ArrayException: public exception


{
private:
string m_error;

public:
ArrayException(string error)


: m_error(error)
{
m_error = error;
}

//stringni doimiy C uslubidagi qator sifatida qaytarish


// const char* what() const { return m_error.c_str(); } // C++11 gacha
const char* what() const noexcept { return m_error.c_str(); } // C++11 va undan yuqori
};

class ArrayInt


{
private:

int m_data[4]; // murakkablashtirmaslik uchun massiv uzunligi sifatida 4 qiymatini belgilaymiz


public:
ArrayInt() {}

int getLength() { return 4; }


int& operator[](const int index)


{
if (index < 0 || index >= getLength())
throw ArrayException("Noto'g'ri indeks");

return m_data[index];


}

};


int main()
{
ArrayInt array;

try
{


int value = array[7];
}
catch (ArrayException &exception) // birinchi navbatda biz avlod sinfining istisnolarini ushlaymiz
{
cerr << "Massivda istisno yuz berdi (" << exception.what() << ")\n";
}
catch (exception &exception)
{
cerr << "Ba'zi boshqa exception sodir bo'ldi" << exception.what() << ")\n";
}
}

C++ 11 da noexcept spetsifikatsiyasi virtual funktsiyaga what () qo'shildi (bu funksiya o'z-o'zidan istisnolarni tashlamaslikka va'da beradi). Shuning uchun, C++ 11 va undan keyingi versiyalarda what () metodini bekor qilishda noexcept spetsifikatsiyasi ham bo'lishi kerak.


O'zingizning istisno sinflaringizni yaratishni xohlaysizmi, C ++ standart kutubxonasidagi istisno sinflaridan foydalaning yoki exception ning avlodi bo'lgan istisno sinflarini yozasizmi, bu sizga bog'liq. Hammasi sizning maqsadlaringizga bog'liq.



Download 1,57 Mb.

Do'stlaringiz bilan baham:
1   ...   51   52   53   54   55   56   57   58   ...   81




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