Hello!
Istisnoni qayd qilaıniz
Bye!
Const char* istisnoni qavta ishlagich chaqirildi – Faylni
ochishdagi xatolik
E’tibor bering, xatolik yuz bergandan keyin lokal obyektning destruktorlari clıaqirildi, ammo bu vaqtdu boshqaruv f1 dan main funksiyasida turgan qayta ishlagichga uzatildi. “Try-blokdan chiqish” axboroti ekranda chiqarilmadi. Dasturda fayllar bilan ishlash uchun oqimlardan foydalanildi.
Shunday qilib, istisnolarni qayta ishlash mexanizmi xatoliklar yuz berganda obyektlami yo‘qotishi mumkin. Shuning uchun resurslarni ajratish va bo‘shatish amalini klasslar ko‘rinislıida (konstruktor tashkil qiladi, destruktor esa bo‘shatadi) tashkil qilish maqsadça rnuvofiq hisoblarıadi. Misol tariqasida fayliar bilan ishlash uchun klassni keltirish mumkin. Bu klassning konstruktori faylni ochadi, destruktor esa yopadi. Albatta bu holda xatolik yuz berganda faylni yopish to‘g'ri tashkil qilinadi va undagi ma’lumotlari yo‘qolmaydi. Ta’kidlab o‘tilganidek, istisno qilinadigan holatlar standart tipda ham, foydalanuvchi aniqlagan tipda ham bo‘lishi mumkin. Bunday hollarda bu tipni global e’lon qilish shart emas va xatolikni qayd qilish hamda ulami qayta ishlash vaqtida ma’lum bo‘lsa yetarli.
Istisno qilinadigan holatlami ifodalovclıi klasslami istisnolami qayta ishlash vaqtida yuzaga kelıshi mumkin bu“lgan klasslar ichida c’lon qilish mumkin. Bu klassning ko‘chirish konstruktori public tarzida e’lon qilinishi shan, aks holda xatolikni qayd qilish vaqtida obyektning nusxasini yaratish mumkin bo‘lmay qoladi.
Konstruktor va destruktordagi istisnolar C++ tili konstruktor va destruktordan qiymat qaytarishda foydalanishga ruxsat bermaydi. Istisnolarni qayta ishlash mexanizmi obyektning konstruktori yoki destruktorida yuzaga kelgan xatolik haqida axborot berishi mumkin. Bu fikrni namoyish qilish uchun Vector klassini tashkil qilamiz. Unda so‘raladigan xotira hajmi cheklanadi.
Istisnolar. Ularni qayta ishlash Istisnolar. Istisnolarni qayta ishlash xatolarni yoki boshqa istisno holatlarni kodni bajarishning umumiy oqimidan ajratish mexanizmini ta'minlaydi. Bu muayyan vaziyatlarda ko'proq erkinlik beradi, shu bilan birga kodlarni qaytaradigan tartibsizliklarni kamaytiradi.
Quyida biz C++ da istisnolardan foydalanish tamoyillarini ko'rib chiqamiz.
C++ tilidagi istisnolar bir-biri bilan birgalikda ishlaydigan uchta kalit so'z yordamida amalga oshiriladi: throw, try va catch.