• G’ayri oddiy holat malumot elemenlaridan foydalanish.
  • G’ayri oddiy holatni qayta ishlovchini ta'riflash




    Download 313,45 Kb.
    bet88/89
    Sana16.11.2023
    Hajmi313,45 Kb.
    #100010
    1   ...   81   82   83   84   85   86   87   88   89
    Bog'liq
    @AKT Official C haqida o\'zbekcha darslar majmui

    G’ayri oddiy holatni qayta ishlovchini ta'riflash

    Dastur g’ayri oddiy holatni generatsiya qilganda kompilyator g’ayri oddiy holatni qayta ishlovchi funktsiyani chaqiradi. Misol uchun qo’yidagi nuke_meltdown gayri oddiy hodisa sinfi bu holatni qayta ishlovchi nuke_meltdown funktsiyasini anilqaydi:


    class nuke_meltdown
    {
    public:
    nuke_meltdown(void){ cerr << "\a\a\aRabotayu! Rabotayu! Rabotayu!" << endl; }
    };
    Bu misoldjva dasturda nuke_meltdown g’ayri oddiy hodisasi generatsiya bo’lganda, C++ nuke_meltdown funktsiyasi operatorlarini ishga tushiradi, shundan so’ng g’ayri oddiy holatni aniqlashgga ruhsat beruvchi try operatoridan so’ng kelgan operatorga boshqarishni uzatadi. Qo’yidagi MELTDOWN.CPP dasturi nuke_meltdown funktsiyasini bajarilishini ko’rsatadi. Bu dasturda try operatoridan g’ayri oddiy holatni aniqlashda ruhsat berish uchun foydalaniladi. Shundan so’ng dastur add_u232 funktsiyani amount parametri bilan chaqiradi. Agar bu parametr qiymati 255 dan kam bo’lsa, funktsiya muvaffaqiyatli bajarilmoqda. Agar parametr qiymati 255 dan oshiq bo’lsa funktsiya nuke_meltdown g’ayri oddiy holatini generatsiya qiladi:
    #include
    class nuke_meltdown
    {
    public:
    nuke_meltdown(void){ cerr << "\a\a\aRabotayu! Rabotayu! Rabotayu!" << endl; }
    };
    void add_u232(int amount)
    {
    if (amount < 255) cout << "Parametr add_u232 v poryadke" << endl;
    else throw nuke_meltdown();
    }
    void main(void)
    {
    try
    {
    add_u232(255);
    }
    catch (nuke_meltdown)
    {
    cerr << "Programma ustoychiva" << endl;
    }
    }
    Bu dastur bajarilganda qo’yidagi ma'lumot ekranga chiqariladi:
    S:\> MELTDOWN
    Rabotayu! Rabotayu! Rabotayu!
    Programma ustoychiva


    G’ayri oddiy holat ma'lumot elemenlaridan foydalanish.

    Oldingi misollarda dastur catch operatori yordamida qanday g’ayri oddiy holat yuz berganini aniqlashi mumkin edi. G’ayri oddiy holat haqida qancha ko’p ma'lumot olinsa shunchalik hatoga to’g’ri reaktsiya qilishi mumkindir. Misol uchun file_open_error hodisasi yuz berganda hato keltirib chiqargan fayl nomini bilish zarurdir. Shunga uhshab file_read_error va file_write_error dasturda hato joylashgan baytni bilish kerak bo’lishi mumkin. Bunday ma'lumotlarni saklab qolish uchun bu ma'lumotlarni g’ayri oddiy holat sinfiga element sifatida kiritib qo’yish mumkindir. Keyinchalik g’ayri oddiy hodisa yuz berganda dastur bu ma'lumotni qayta ishlovchi funktsiyaga parametr sifatida uzatishshi mumkindir:


    throw file_open_error(source);
    throw file_read_error(344);
    Gayri oddiy holatni kayta ishlovchida bu parametrlar sinfning mos parametrlariga berib kuyilmishi mumkin. Masalan:
    class file_open_error
    {
    public:
    file_open_error(char *filename) { strcpy(file_open_error::filename, filename); }
    char filename[255] ;
    };



    Download 313,45 Kb.
    1   ...   81   82   83   84   85   86   87   88   89




    Download 313,45 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    G’ayri oddiy holatni qayta ishlovchini ta'riflash

    Download 313,45 Kb.