C++ istisnolar (exceptions)


ULASHISH

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 belgilaydi
  • throw — 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:

Misol

int age = 20;
O‘zingiz sinab ko‘ring »

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!