Mobil ilovalar ishlab chiqish



Download 387,44 Kb.
bet28/34
Sana14.01.2022
Hajmi387,44 Kb.
#363624
1   ...   24   25   26   27   28   29   30   31   ...   34
Bog'liq
Dart tili mustaqil ish

6-bob. Istisnolarni ko'rib chiqish

Блок try..catch


Dasturni ishga tushirish jarayonida dasturning odatiy jarayonini buzadigan va hatto uning bajarilishini to'xtatishga majbur qiladigan turli xil xatolar yuzaga kelishi mumkin. Bunday xatolar istisnolar deb ataladi. Dart tili, ko'plab dasturlash tillari kabi, istisnolardan foydalanishni qo'llab-quvvatlaydi, bu bizga dasturni buzmaslikka imkon beradi.
Keling, eng oddiy vaziyatni ko'rib chiqaylik:

1

2

3



4

5

6



7

8


void main (){

      


     int x = 9;

     int y = 0;

     int z = x ~/ y;

      


     print(z);

}


Bunday holda, 0 ga butun son bo'linishi (~ / operatsiyasi) mavjud. Natijada, dastur istisno hosil qiladi va uning bajarilishini to'xtatadi. Vaziyat sun'iy bo'lib tuyulishi mumkin, chunki bu erda biz o'zgaruvchilardan biri 0 ga teng ekanligini aniq ko'ramiz va tabiiyki, dastur xato bilan tugaydi. Biroq, aslida, biz tashqi manbadan ma'lumotlarni qabul qilishimiz mumkin va 0 yoki 0 emasligini aniq bilmaymiz. Bundan tashqari, Dartdagi istisnolar nolga bo'linish bilan cheklanmaydi, bunday favqulodda to'xtash holatlari ko'p. dasturning ishlashi mumkin.
Dart bizga bunday vaziyatlarni hal qilish uchun nimani taklif qiladi? Birinchidan, bu sinash ... bo'yicha ... qo'lga olish ... nihoyat qurilish:

1

2

3



4

5

6



7

8

9



10

11

12



try{

    // Код, который может привести к генерации исключения 

}

on Тип_Исключения{



     // Обработка возникшего исключения

}

catch (e){



     // Обработка возникшего исключения

}

finally{



     //

}


try..on..catch..finally blokidan foydalanilganda, birinchi navbatda try blokidagi barcha operatorlar bajariladi. Agar ushbu blokda istisnolar o'rnatilmagan bo'lsa, u bajarilgandan so'ng final bloki bajarila boshlaydi. Keyin try..on..catch..nihoyat konstruksiya oʻz ishini yakunlaydi.
Agar sinash blokida to'satdan istisno ro'y bersa, u holda oddiy bajarish tartibi to'xtaydi, keyin dasturning bajarilishi ko'tarilgan istisnoni hal qila oladigan on yoki catch blokiga o'tadi. Agar kerakli blok yoki catch bloki topilsa, u bajariladi va u tugagach, yakuniy blok bajariladi.
On va catch iboralarining farqi shundaki, on tutqichlar ma'lum turdagi istisno (on bayonoti keyingi mavzuda batafsilroq muhokama qilinadi). Va catch barcha istisnolarni boshqaradi.

Agar blok yoki catch blokida talab qilinadigan blok topilmasa, istisno sodir bo'lganda, finally bloki yana bajariladi va dastur o'z bajarilishini g'ayritabiiy tarzda tugatadi.


Keling, try..on..catch..nihoyat, 0 ga boʻlinish jarayonidan foydalanamiz:

1

2

3



4

5

6



7

8

9



10

11

12



13

14


void main (){

      


     try{

        int x = 9;

        int y = 0;

        int z = x ~/ y;

      

        print(z);



    }

    catch(e){

         print("Возникло исключение $e");

    }


    print("Завершение программы");

}


Bu erda istisnoga olib kelishi mumkin bo'lgan kod sinash blokiga joylashtirilgan. Qavs ichidagi catch bloki istisno qilinganda uzatiladigan parametrlar ro'yxatini o'z ichiga oladi. Bunday holda, bu bitta parametr - (e), bu istisno haqidagi ma'lumotni ifodalaydi.
Va ushbu dasturni bajarishda biz quyidagi konsol natijasini olamiz:

Возникло исключение IntegerDivisionByZeroException

Завершение программы

Bu erda biz istisno qilinganiga qaramay, dastur g'ayritabiiy tarzda tugamaganini va catch bloki bajarilgandan so'ng u o'z ishini davom ettirganini ko'ramiz.


Dizaynni belgilashda, agar kerak bo'lmasa, biz bir qator bloklarni o'tkazib yuborishimiz mumkin. Faqat try bloki talab qilinadi. Biroq, hech bo'lmaganda, u bilan birga yoqish va / yoki catch bloki yoki finally bloki ham ishlatilishi kerak. Shunday qilib, yuqoridagi misolda faqat try and catch bloklari ishlatilgan. Nihoyat blokni qo'shamiz:

1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



16

17

18



void main (){

      


     try{

        int x = 9;

        int y = 0;

        int z = x ~/ y;

      

        print(z);



    }

    catch(e){

         print("Возникло исключение $e");

    }


    finally{

         print("Выполнение блока finally");

    }

    print("Завершение программы");



      

}


Konsol chiqishi:

Возникло исключение IntegerDivisionByZeroException

Выполнение блока finally

Завершение программы

Bunday holda, biz catch blokini o'tkazib yuborishimiz mumkin:

1

2

3



4

5

6



7

8

9



10

11

12



13

14

15



void main (){

      


     try{

        int x = 9;

        int y = 0;

        int z = x ~/ y;

      

        print(z);



    }

    finally{

         print("Выполнение блока finally");

    }


    print("Завершение программы");

      


}

Sinov blokiga istisno kiritilgandan so'ng, finally bloki bajariladi, shundan so'ng dastur g'ayritabiiy tarzda to'xtaydi.
Blok parametrlarini ushlang

Qabul qilish blokiga bir qator parametrlar uzatiladi, ular istisno haqida ma'lumot beradi va biz, agar kerak bo'lsa, ushbu ma'lumotlarni olishimiz va foydalanishimiz mumkin:



1

2

3



4

5

6



7

8

9



10

11


try{

    int x = 9;

    int y = 0;

    int z = x ~/ y;

      

    print(z);



}

catch(e, s){

    print("Обработка исключения $e");

    print("Стек $s");

}


Catch blokining birinchi parametri e, istisno ob'ektini, ikkinchisi, s, istisnolar stekini ifodalaydi, bu istisno qayerda sodir bo'lganligini tushunishga imkon beradi.


Download 387,44 Kb.

Do'stlaringiz bilan baham:
1   ...   24   25   26   27   28   29   30   31   ...   34




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish