C++ istisnolar (exceptions)
Istisnolar
C++ xatolar bobida aytib o‘tilganidek, dastur ishlayotganda turli xil xatolar yuz berishi mumkin — masalan, kod yozishdagi xatolar, noto‘g‘ri kiritilgan ma’lumotlar yoki kutilmagan vaziyatlar.
Xato yuz berganda C++ odatda to‘xtaydi va xato xabarini hosil qiladi. Buning texnik atamasi: C++ istisno (exception) tashlaydi (xato tashlaydi).
Istisnolarni qayta ishlash (try va catch)
Istisnolarni qayta ishlash bajarilish vaqtida xatolarni ushlash va qayta ishlash imkonini beradi — shunda dasturingiz ishdan chiqmaydi.
U uchta kalit so‘zdan foydalanadi:
try— tekshiriladigan kodni belgilaydithrow— istisno hosil qiladi (tashlaydi)catch— xatoni qayta ishlaydi
Misol
try {
// Code that may throw an exception
throw 505;
}
catch (int errorCode) {
cout << "Error occurred: " << errorCode;
}
Bu yerda dastur 505 qiymatli istisno tashlaydi, u esa catch blokida ushlanib, qayta ishlanadi.
Hayotiy misol: yoshni tekshirish
Foydalanuvchining yoshi yetarlimi yoki yo‘qligini tekshirish uchun istisnolarni qayta ishlashdan foydalanishimiz mumkin:
Misol
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw (age);
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Age is: " << myNum;
}
O‘zingiz sinab ko‘ring »
Misol izohi
Biror kodni tekshirish uchun try blokidan foydalanamiz: agar age o‘zgaruvchisi qiymati 18 sonidan kichik bo‘lsa, istisno tashlaymiz (throw) va uni catch blokida qayta ishlaymiz.
catch blokida xatoni ushlaymiz va unga nisbatan biror amal bajaramiz. catch operatori parametr qabul qiladi: misolimizda age qiymatini chiqarish uchun int tipidagi o‘zgaruvchidan (myNum) foydalanamiz (chunki try blokida int tipidagi istisno (age) tashlayapmiz).
Agar xato yuz bermasa (masalan, age qiymati 15 emas, balki 20 bo‘lsa, ya’ni 18 dan katta bo‘lsa), catch bloki o‘tkazib yuboriladi:
Shuningdek, throw kalit so‘zidan tartibga solish maqsadida o‘zingiz belgilagan xato raqami/kodi kabi raqamni chiqarish uchun ham foydalanishingiz mumkin (misolimizda 505):
Misol
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (int myNum) {
cout << "Access denied - You must be at least 18 years old.\n";
cout << "Error number: " << myNum;
}
O‘zingiz sinab ko‘ring »
Istalgan turdagi istisnolarni qayta ishlash (...)
Agar try blokida ishlatilgan throw tipini bilmasangiz, catch bloki ichida "uchta nuqta" sintaksisidan (...) foydalanishingiz mumkin — u istalgan turdagi istisnoni qayta ishlaydi:
Misol
try {
int age = 15;
if (age >= 18) {
cout << "Access granted - you are old enough.";
} else {
throw 505;
}
}
catch (...) {
cout << "Access denied - You must be at least 18 years old.\n";
}
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
