ISTISNOLI HOLATLAR VA ULARNI QAYTA ISHLASH.
I STI SN OL I HOL ATL A R VA UL A RN I QAY TA I SHL A SH. I STI SN OL I HOL ATL A R A SOSLA RI . I STI SN OL I HOLATL A R N I GEN ERA SI YA QI LI SH. I STI SN OL I HOLATL A R N I USHL A SH.
• C++ kodini bajarishda turli xil xatolar yuzaga kelishi mumkin: dasturchi tomonidan kodlash xatolari, noto'g'ri kiritilgan xatolar yoki boshqa oldindan aytib bo'lmaydigan narsalar . • Xato sodir bo'lganda, C++ odatda to'xtaydi va xato xabarini yaratadi. Buning texnik atamasi: C++ i st i sno (xato) chiqaradi. • I st isno - bu dasturni bajarish jarayonida yuzaga keladigan muammo. C++ istisnosi dastur ishlayotgan vaqtda yuzaga keladigan istisno holatlarga javobdir, masalan, nolga bo'lishga urinishi. • Istisnolar dasturning bir qismidan boshqasiga boshqaruvni o'tkazish usulini ta'minlaydi. C++ istisnolarini qayta ishlash uchta kalit so'z asosida qurilgan: t ry (u ri ni b k o'r i ng), cat ch (t ut i ng), v a t hrow (t a sh l ang). • C++ da t hrow iborasi istisno yoki xato haqida signal berish uchun ishlatiladi. Istisno sodir bo'lganligi haqida signal berish istisnoni generatsiyasi deb ataladi.
• t hrow operatoridan foydalanish uchun siz throw kalit so'zidan keyin xato haqida signal berish uchun foydalanmoqchi bo'lgan har qanday ma'lumot turi qiymatidan foydalanasiz. Odatda, bu qiymat xato kodi, muammoning tavsifi yoki maxsus istisno sinfi bo’lishi mumkun. • throw -1; // int tipidagi istisno generatsiyasi • throw ENUM_INVALID_INDEX; // enum tipidagi generatsiya • throw "Manfiy sonning kvadrat ildizini olib bo'lmaydi"; // const char * tipidagi istisnoni generatsiyasi (C uslubidagi satr) • throw dX; // double turidagi istisno generatsiyasi (oldin aniqlangan double tipidagi o'zgaruvchi) • throw MyException("Fatal Error"); // MyException sinfining obyekti yordamida istisno qilish try { // Bu erda biz keyingi istisnolarni generatsiya qiladigan bayonotlarni yozamiz throw -1; // }
• t r y blokidan keyingi ca t ch bloki har qanday istisnoni aniqlaydi. Qaysi turdagi istisnolarni aniqlashni xohlayotganingizni belgilashingiz mumkin va bu catch kalit so'zidan keyin qavs ichida paydo bo'ladigan istisno qoidasi bilan aniqlanadi. • t r y bloki bir xil t r y blokidagi har qanday bayonot tomonidan chiqarilgan istisnolarni qidiradigan kuzatuvchi sifatida ishlaydi, masalan: try { // Bu erda biz keyingi istisnolarni generatsiya qiladigan bayonotlarni yozamiz throw -1; // } E'tibor bering, try bloki istisnoni qanday hal qilishimizni aniqlamaydi.
• Istisnolarni qayta ishlash catch blokining ishi. ca t ch kalit so'zi ma'lum bir turdagi ma'lumotlarning istisnolarini ko'rib chiqadigan kod blokini aniqlash uchun ishlatiladi. • Bu yerda int tipidagi istisnolarni ko‘rib chiqadigan (tutadigan) catch blokiga misol: • try va catch bloklari birgalikda ishlaydi. try bloki unga kiritilgan har qanday istisnolarni aniqlaydi va ularni qayta ishlash uchun tegishli catch blokiga yo'naltiradi. Try blokida darhol o'zidan keyin kamida bitta catch bloki bo'lishi kerak, lekin u ketma-ket (birin-ketin) bir nechta catch bloklariga ega bo'lishi ham mumkin. catch (int a) { // int tipidagi istisno bilan ishlash cerr << "Biz qiymat bilan int istisnosini ushladik" << a << '\n'; }