Объектга йўналтирилган программалаш


Download 0.58 Mb.
bet66/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   ...   63   64   65   66   67   68   69   70   71
Bog'liq
С ОЙП

#include
class Tayanch
{
};
class Hosila: public Tayanch
{
};
void Fun_Hosila_Istisnosi()
{
Hosila hosila;
throw hosila;
}
void Fun_Istisno()
{
throw "Fun_Istisno() funksiyasida xato!\n";
}


int main()
{
try
{
Fun_Hosila_Istisnosi();
}
catch (Hosila &)
{
cout<<"Hosila& istisnosi ilib olindi!\n";
}
catch (Tayanch &)
{
cout<<"Tayanch& istisnosi ilib olindi!\n";
}
try
{
Fun_Istisno();
}
catch (const char * s)
{
cout<<"const char * istisnosi ilib olindi!\n";
cout<<"Istisno manzili: "<


}
catch (void *)
{
cout<<"void* istisnosi ilib olindi!\n";
}
return 0;
}
Программа ишлаши натижасида экранга қуйидаги сатрлар чиқади:
Hosila& istisnosi ilib olindi!
const char * istisnosi ilib olindi!
Istisno manzili: Fun_Istisno() funksiyasida xato!
Агар программада catch(Tayanch&) блоки catch(Hosila&) блокидан олдин ёзилса, у Hosila синфи туридаги қайта ишловчисини яширади ва шу турдаги истиснони ўзи илиб олади. Худди шундай, catch(void*) блоки catch(const char *s) блокдан олдин келса, кўрсаткич туридаги барча истисноларни илиб олади, хусусан, const char* туридаги истиснони ҳам. Юқоридаги программада бундай ўрин алмаштиришлар қилинса, экранга
Tayanch& istisnosi ilib olindi!
void* istisnosi ilib olindi!
хабарлари чоп этилади.


Ичма-ич жойлашган try-catch блоклар
С++ тили ичма-ич жойлашган try-catch блокларни ишлатишга имкон беради. Бундай кўринишлар учун ягона талаб – ҳар бир try-блокдан кейин албатта catch-блок келиши керак.
Мисол:
#include

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   63   64   65   66   67   68   69   70   71




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