7-BOB
Favqulotda holatni qayta ishlash
Favqulotda holat yoki istisno – bu apparaturadan noto’g’ri foydalanish bilan yuz beradigan ko’zda tutilmagan yoki mushkul xodisa. Masalan, bu nolga bo’lish yoki xotiraning mavjud bo’lmagan manziliga murojaat etish. Odatda bu hodisalar xato haqidagi sistemali xabar bilan dasturning yakunlanishiga olib keladi. C++ dasturchiga dasturni tiklash va uni bajarishni davom ettirish imkoniyatini beradi.
C++ favqulotda holatlari jixoz xatosi yoki uzilishlarni qayta ishlash, masalan, Ctrl+C tugmasini bosish kabi asinxron xodisalarni qayta ishlashni qo’llamaydi. Favqulotda hollar faqat mexanizm dasturini o’zi ishlashi uchun mo’ljallangan va oshkora tarzda ko’rsatiladi. Favqulotda holatlar dasturning biror qismi hamma vaqt ham ishidan (smogla) talab qiladigan narsani bajara olmaydigan vaqtda paydo bo’ladi. Bunda dasturning qolgan qismi qandaydir boshqa narsa qilishga harakat qiladi.
Favqulotda holarlar hisoblash jarayoni mantiqan ikkita qismga ajratishga imkon beradigan favqulotda holatni toppish va uni qayta ishlash. Bu nafaqat dasturning yaxshi strukturalashtirishda muhim. Asosiy sabab xatoni topgan funksiya uni to’g’rilash uchun nima qilish kerakligini bilmasligi mumkin, bu funksiyadan foydalanuvchi kod esa nima qilish kerakligini bilishi, lekin xato paydo bo’lgan joyni aniqlay olmasligi mumkin. Bu ayniqsa ko’p modullardan iborat kutubxona funksiyalari va dasturlaridan foydalanishda juda dolzarb hisoblanadi.
Favqulotda holatlarning boshqa afzalligi chaqiruvchi funksiyaga xato haqida axborotni uzatish uchun qaytariluvchi qiymat parametrlar va global o’zgaruvchilarni qo’llash talab etilmaydi, shuning uchun funksiyalar interfeysi kengaymaydi. Bu masala konstruktorlar uchun muhim, ular sintaksis bo’yicha qiymatni qaytara olmaydi.
Favqulotda holatlarni qayta ishlash mexanizmi
Xato yuz berishi mumkin bo’lgan jihat nazorat qilinuvchi blokka – oldida try kalit so’zi yozilgan murojaat operatorga kirish lozim.
Favqulotda holatlarni qayta ishlash qanday amalga oshirilishini qaraymiz:
Favqulotda holatni qayta ishlash xato paydo bo’lishi bilan boshlanadi. U paydo bo’lgan funksiya favqulotda holatni paydo qiladi. Buning uchun favqulotda holar turini aniqlovchi parametrli throw kalit so’zidan foydalaniladi. Parametr konstanta o’zgaruvchi yoki obyekt bo’lishi mumkin va favqulotda holat haqidagi ma’lumotni uni qayta ishlovchiga uzatish uchun foydalaniladi.
Tegishli favqulotda holat qayta ishlovchisi izlanadi va unga boshqaruv beriladi.
Agar favqulotda holat qayta ishlovchisi topilmasa, joriy jarayon favqulotda tugatuvchi abort funksiya chaqiruvchi terminate standart funksiya chaqiriladi. Jarayonni tugatishning xos funksiyasini o’rnatish ham mumkin.
Kitobning birinchi qismida har bir funksiya chaqirganda stekda local o’zgaruvchilarni va chaqiriluvchi funksiyaga qaytarilish manzilini saqlash uchun xotira sohasi yaratiladi. Chaqirishlar steki atamasi chaqirilgan, lekin hali tugatilmagan funksiyalar ketma-ketligini bildiradi. Stekni yoyish deb xotirani local o’zgaruvchilar va chaqiriluvchi funksiya boshqaruvini qaytarish uchun ozod qilish jarayoniga aytiladi. Funksiya tugatilganda, stekning tabiiy yoyilishi yuz beradi. O’sha mexanizm favqulotda holatlarni qayta ishlashda qo’llaniladi. Shuning uchun favqulotda holat qayta qilingandan so’ng favqulotda holat bu holning paydo bo’lish nuqtasidan davom ettirilishi mumkin bo’lmaydi.
Do'stlaringiz bilan baham: |