1. Python tili imkoniyatlari Pythonni ko`chirish


Pythonda noodatiy holatlar. Noodatiy holatlarni qayta ishlash uchun try – except konstruksiyasi



Yüklə 2,19 Mb.
səhifə34/78
tarix19.12.2023
ölçüsü2,19 Mb.
#152124
1   ...   30   31   32   33   34   35   36   37   ...   78
1. Python tili imkoniyatlari Pythonni ko`chirish

Pythonda noodatiy holatlar. Noodatiy holatlarni qayta ishlash uchun try – except konstruksiyasi


Noodatiy holatlar (exceptions) – pythondagi yana bir ma`lumotlar tiplaridan biridir. Noodatiy holatlar dasturciga xatoliklar haqida xabar berish uchun ishlatiladi.

>>> 100 / 0
Traceback (most recent call last):
File "", line 1, in
100 / 0
ZeroDivisionError: division by zero

Noodatiy holatlarning eng oddiylaridan biri – bu nolga bo`lishdir.





>>> 2 + '1'
Traceback (most recent call last):
File "", line 1, in
2 + '1'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> int('qwerty')
Traceback (most recent call last):
File "", line 1, in
int('qwerty')
ValueError: invalid literal for int() with base 10: 'qwerty'

Bu yerda interpretator bizga ZeroDivisionError noodatiy holati haqida xabar berdi, ya`ni, nolga bo`lishga harakat qilinganligini bildirdi. Bundan tashqari yana boshqa noodatiy holatlar ham mavjud.


Bu ikkita misolda mos ravishda TypeError va ValueError noodatiy holatlari yuzaga kelmoqda. Chiqarilgan xabar bizga bu holatlar qayerda yuzaga kelganligi va nima bilan bog`ilqligi haqida to`la ma`lumot bermoqda.
Python tarkibidan o`rin olgan noodatiy holatlar bilan tanishib chiqamiz, lekin shuni ham aytish kerakki, siz ish jarayonida boshqacha noodatiy holatlarga ham duch kelisingiz mumkin, chunki, dasturchilar o`zlarining shaxsiy noodatiy holatlarini ham yaratib qo`yishlari mumkin. Ushbu ro`yxat python 3.3 uchun o`rinli bo`lib, boshqa versiyalarda ma`lum bir o`zgarishlar kuzatilishi mumkin.
BaseException – barcha boshqa noodatiy holatlarning asosi bo`lgan bazaviy noodatiy holat.
SystemExit – dasturdan chiqish paytida sys.exit funksiyasi tomonidan yuzaga keltiriladigan noodatiy holat.
KeyboardInterrupt – foydalanuvchi tomonida dstur ishini to`xtatilganda (odatda Ctrl+C kombinatsiyasi orqali) yuzaga keladi.
GeneratorExit – generator ob`yektining close metodiga murojaat qilinganda yuzaga keladi.
Exception – mana bu yerda esa sistemaning noodatiy holatlari yakuniga yetdi (ularga yaxshisi tegmagan ma`qul) hamda ular bilan ishlash mumin bo`lgan oddiylari boshlanadi.
* StopIteration – agar iteratorda boshqa element qolmagan bo`lsa, u holda, next ichki funksiyasi tomonidan yuzaga keltiriladi.
* ArithmeticError Arifmetik xatolik
· FloatingPointError – suzuvchi vergul ustida xato amal bajarilganda yuzaga keladi. Amaliyotda juda kam uchraydi.
· OverflowError – Arifmetik amalning natijasi ko`rsatish uchun haddan tashqari katta bo`lib ketganda yuzaga keladi. Butu nsonlar bilan ishlashkabi oddiy holatlarda yuzaga kelmaydi, chunki, python uzun sonlar bilan ishlash imkoniyatiga ega. Lekin ba`zi boshqa holatlarda yuzaga kelishi mumkin.
· ZeroDivisionError – nolga bo`lish.
* AssertionError – Assert funksiyasidagi ibora yolg`on
* AttributeError – ob`yekt ko`rsatilgan etribut (qiymat yoki metod)ga ega emas.
* BufferError – bufer bilan bog`liq operatsiyani bajarishning imkoni yo`q.
* EOFError – funksiya faylning oxiriga taqalib qoldi va izlagan ma`lumotini o`qiy olmadi
* ImportError – modul yoki uning atributini import qilib bo`lmadi.
* LookupError – noto`g`ri indeks yoki kalit
· IndexError – index elementlar diapazoniga kirmaydi.
· KeyError – mavjud bo`lmagan kalit(lug`at, ob`yekt yoki boshqa to`plamda).
* MemoryError – xotira yetishmovchiligi
* NameError – ko`rsatilgan nomdagi o`zgaruvchi topilmadi
· UnboundLocalError – funksiyadagi lokal o`zgaruvchiga murojaat qilingan, lekin, bu o`zgaruvchi oldindan e`lon qilinmagan.
* OSError – sistema bilan bog`liq xatolik.
· BlockingIOError – kiritish-chiqarish bilan bog`liq xatolik
· ChildProcessError – quyi darajadagi protsess bilan bog`liq xatolik
· ConnectionError – aloqa bilan bog`liq noodatiy holatlar uchun bazaviy klass.
· BrokenPipeError – kanalga yozishga urinish vaqtida kanalning ikkinchi uchi yopiq bo`lgan hollarda yuzaga keladi
· ConnectionAbortedError – aloqa tuguni tomonidan yakunlanish vaqtida yuzaga keladi
· ConnectionRefusedError – tugunning aloqani rad etishi natijasida yuzaga keladi.
· ConnectionResetError – tugun tomonidan ulanish uzib qo`yilganda yuzaga keladi.
· FileExistsError – oldindan mavjud bo`lgan fayl yoki papkani yaratishga urinish davrida yuzaga keladi..
· FileNotFoundError – fayl yoki papka mavjud emas.
· InterruptedError – tizim so`rovi kiruvchi signal tomonidan uzib qo`yilgan.
· IsADirectoryError – fayl kutilayotganda papka kelganda yuzaga keladi.
· NotADirectoryError – Papka kutilayotganda fayl kelganda yuzaga keladi.
· PermissionError – boshqarish huquqlari yetishmaydi.
· ProcessLookupError – ko`rsatilgan protsess mavjud emas..
· TimeoutError – kutish vaqti nihoyasiga yetdi.
* ReferenceError – kuchsiz havolali atributga murojaat qilishga urinish.
* RuntimeError – noodatiy holat boshqa birorta ham shunday holatlarga mos kelmaganda yuzaga keladi.
* NotImplementedError –klassning abstrakt metodlar o`z bo`ysinuvidagi boshqa klasslarda qayta aniqlashni talab qilganda yuzaga keladi.
* SyntaxError – sintaktik xatolik.
· IndentationError – xato bo`sh joy tashlashlar (siljishlar).
· TabError – siljishlarda bo`sh joy tashlash hamda tabulyatsiya belgilarining aralashtirilishi.
* SystemError – ichki xatolik.
* TypeError – amal mos kelmaydigan tipli ob`yektga nisbatan qo`llanilgan.
* ValueError – funksiya to`g`ri tipli, lekin, xato qiymatli argument olganda yuzaga keladi.
* UnicodeError – unikod satrlarning xato kodlanishi / dekodlanisi bilan bog`liq xatolik.
· UnicodeEncodeError – unikod kodlash bilan bog`liq xatolik
· UnicodeDecodeError – inikod dekodlash bilan bog`liq xatolik.
· UnicodeTranslateError – unikod tarjimasi bilan bog`liq xatolik
* Warning - ogohlantirish.
Endi qachon va qanday vaziyatlarda noodatiy holatlar yuzaga kelishini bilgan holda biz ularni qayta ishlashimiz mumkinbo`ladi. Noodatiy holatlarni qayta ishlashuchun try/except konstruksiyasi qo`llaniladi.
Ushbu konstruksiyadan foydalanishga birinch misolimiz:

>>> try:
... k = 1 / 0
... except ZeroDivisionError:
... k = 0
>>>print(k)
0

T


>>> try:
... k = 1 / 0
... except ArithmeticError:
... k = 0
>>> print(k)
0
ry blokida biz noodatiy holatni yuzaga keltirishi mumkin bo`lgan amallarni bajaramiz, except blokida esa biz ularni qayta ishlaymiz. Bunda noodatiy holatning o`zi bilan birgalikda uning avlodlari ham tutib qolinadi. Masalan, ArithmeticError ni ushlab qolish oqibatida biz FloatingPointError, Over2owError va ZeroDivisionError larni ham ushlab qolamiz.

Bundan tashqari yuzaga kelishi mumkinbo`lgan har qanday noodatiy holatlarni (klaviatura orqali uzilish, tizimli chiqish va h.k.) ushlab qolishi mumkin bo`lgan argumentsiz except ko`rsatmasi ham mavjud. Shuning uchun bunday formada excep ko`rsatmasi deyarli qo`llanilmaydi, uning o`rniga esa except Exception dan foydalaniladi. Lekin, ko`pincha noodatiy holatlarni bitta holat uchun qayta ishlashga harakat qilinadi, chunki, aks holda siz kutgan noodatiy holat o`rniga boshqa yuzaga kelishi mumkin bo`lgan noodatiy holatni ushlab olinishi va uni xato tarzda qayta ishlanisih mumkin.


B
>>> f = open('1.txt')
>>> ints = []
>>> try:
... for line in f:
... ints.append(int(line))
... except ValueError:
... print(Bu son emas, chiqamiz.')
... except Exception:
... print(‘Bu yana nima edi?’)
... else:
... print('Hammasi joyida')
... finally:
... f.close()
... print('Men faylni yopdim')
... # Aynan shunday ketma-ketlikda: try, except guruhi, undan keyin else va eng oxirida finally.
...
Bu son emas, chiqamiz.
Men faylni yopdim.
izning mavzumizga taalluqli yana ikkita ko`rsatmalar: finally
va else lardir. Finally o`zidagi ko`rsatmalarni noodatiy holat yuzaga kelgan yoki kelmaganligidan qat`iy nazar amalga oshiradi(har qanday vaziyatda ham nimadir vazifani bajarish kerak bo`lgan holatlarda qo`llaniladi: masalan, faylni ishlatib bo`lingandan keyin yopish uchun). Else ko`rsatmasi esa noodatiy holat yuzaga kelmagandagina qo`llaniladi.

21-bob


Yüklə 2,19 Mb.

Dostları ilə paylaş:
1   ...   30   31   32   33   34   35   36   37   ...   78




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə