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


Download 0.58 Mb.
bet63/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   ...   59   60   61   62   63   64   65   66   ...   71
Bog'liq
С ОЙП

{
c=AdivB(a,b);
cout<<"Istisno ro'y bermadu!\n";
cout<<"c="<
return 0;
}
catch (int)
{
cout<<" int turidagi istisno ro'y berdi!\n";
return 1;
}
catch (...)
{
cout<<"Qandydir istisno ro'y berdi!\n";
return 2;
}
}
Программадаги AdivB() функцияси истистно ҳолатни юзага келтириши мумкин, масалан нолга бўлиш. Функцияда юзага келадиган истиснони қайта ишлаш учун иккита catch-блок аниқланган. Биринчисида int туридаги истисно илиб олинади. Агар бошқа турдаги истисно рўй берса уни catch(...) оператори қайта ишлайди.
Истисноларни юзага келтириш
Программадаги юзага келадиган истисно ва унинг турини кўрсатиш учун қуйида келтирилган синтаксисга эна throw калит сўзи ишлатилади:
throw <ифода>;
бу ерда <ифода> – ҳисобланган қиймати, шу ифода тури билан аниқланган вақтинчалик объектни инициализация қилувчи ифодадир.
throw операнди бўлмаслиги мумкин. Бу кўриниш айни пайтда қайта ишланаётган истисно туридаги истиснони қайта юзага келтириш учун ишлатилади ва у фақат catch-блок ичида ишлатилиши мумкин.
Программанинг throw операнди жойлашган жой истиснони юзага келтириш нуқтаси дейилади.
Истиснони юзага келтиришга мисол келтирамиз.
#include
#include
using std::cout;
class Xato1{};
class Xato2{};
// Хато рўй бериши мумкин бўлган функция
int AdivB(int a, int b)
{
if (!b) throw Xato1();
if (!a) throw Xato2();
return a/b;
}
int main()
{
int a,b,c;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
try
{
c=AdivB(a,b);
cout<<"Istisno ro'y bermadu!\n";

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   59   60   61   62   63   64   65   66   ...   71




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