Dart tili bo'yicha qo'llanma 1-bob. Dart tiliga kirish Dart nima. Birinchi dastur




Download 283.65 Kb.
bet29/35
Sana28.02.2022
Hajmi283.65 Kb.
#18225
1   ...   25   26   27   28   29   30   31   32   ...   35
Bog'liq
Dart tili
Tohirov-Odilbek-1, Тўлов топши%D, alifatik bir asosli karbon kislotalarning gomologik qatori , Asosiy qisim, 14 tayyor mahsulot, Документ Microsoft Word (2) крилллл, menejment2, yurish qismiga txk O\'MT (2), Abdullayev Jo’ra Xudoyorovich, Bayonnoma, Qurilish materiallari va byumlari, Полевые транзисторы1, жиноят ишида мавжуд хужжатлар, îáΦ¿¡á σá¼ ¼Ñσá¡¿º¼½Ñα »á¡¿¡Ñ¡ 100 ß«αáπ QQ
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 283.65 Kb.
1   ...   25   26   27   28   29   30   31   32   ...   35




Download 283.65 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Dart tili bo'yicha qo'llanma 1-bob. Dart tiliga kirish Dart nima. Birinchi dastur

Download 283.65 Kb.