Dart tiliga kirish O'zgaruvchilar va konstantalar Primitiv ma'lumotlar turlari
Download 374.15 Kb.
|
3-mustaqil ish
6-bob. Istisnolarni ko'rib chiqish
Блок try..catchDasturni 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:
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:
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:
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:
Konsol chiqishi: Возникло исключение IntegerDivisionByZeroException
Bunday holda, biz catch blokini o'tkazib yuborishimiz mumkin:
Sinov blokiga istisno kiritilgandan so'ng, finally bloki bajariladi, shundan so'ng dastur g'ayritabiiy tarzda to'xtaydi. 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:
Catch blokining birinchi parametri e, istisno ob'ektini, ikkinchisi, s, istisnolar stekini ifodalaydi, bu istisno qayerda sodir bo'lganligini tushunishga imkon beradi. Download 374.15 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling