Dinamik tiplashtirilgan


istisno qilinadigan vaziyat



Download 2,94 Mb.
bet46/117
Sana01.02.2022
Hajmi2,94 Mb.
#422447
1   ...   42   43   44   45   46   47   48   49   ...   117
Bog'liq
Pyton tili8 (3)

istisno qilinadigan vaziyat

ma’nosi

BaseException

Barcha istisno qilinadigan vaziyatlar uchun bazaviy klass

GeneratorExit

generatorlarning .close() metodi bilan qoʻzgʻatiladi.

KeyboardInterrupt

Ishni toʻhtatish klavishasini bosish bilan qoʻzgʻatiladi. (odatda bu Ctrl+C)

SystemExit

dastur ishini yakunlash

Exception

dastur ishini yakunlash bilan bogʻliq boʻlmagan barcha istisnoli vaziyatlar uchun bazaviy klass

StopIteration

takrorlashlarni (iteratsiyalar) toʻhtatish uchun qoʻzgʻatiladi

StandardError

Exception klassining vorisi boʻlgan barcha istisnolar uchun bazaviy klass

ArithmeticError

Arifmetik amallar yordamida qoʻzgʻatiladigan istisnolar uchun bazaviy klass

FloatingPointError

koʻchuvchi vergulli sonlar bilan bogʻliq hatolik

ZeroDivisionError

nolga yoki modul boʻyicha nolga boʻlinish

AssertionError

assert koʻrsatmalari bilan qoʻzgʻatiladi

AttributeError

mavjud boʻlmagan attributga murojaat orqali qoʻzgʻatiladi

EnvironmentError

Tashqi sabablar bilan bogʻliq hatoliklar

IOError

fayllar bilan ishlashda kiritish-chiqarish hatoligi

OSError

operatsion tizim hatoligi

EOFError

faylning tugashi bilan sodir boʻladi

ImportError

import koʻrsatmasidagi hatolik

LookupError

Indeks yoki kalit boʻyicha murojaat hatoligi

IndexError

chetdagi indeks boʻyicha murojaat hatoligi

KeyError

lugʻatning mavjud boʻlmagan kalitiga murojaat hatoligi

MemoryError

Xotiraning yetishmasligi

NameError

Lokal yoki global nomni topib boʻlmadi

UnboundLocalError

hozircha qiymat olmagan oʻzgaruvchiga murojaat

ReferenceError

oʻchirilgan ob’yektga murojaat

RuntimeError

universal istisno

NotImplementedError

mavjud boʻlmagan metod yoki funksiyaga murojaat

SyntaxError

sintaktik hato

IndentationError

chetlanishlarni rasmiylashtirishdagi hatolik

TabError

tabulyatsiya belgisidan nooʻrin foydalanish (interpretatorni –tt kaliti bilan ishga tushirilganda yuzaga keladi)

SystenError

interpretatordagi qoʻpol boʻlmagan hatolik

TypeError

boʻlmagan tiplar ustida amal bajarishga urinish

ValueError

mumkin boʻlmagan tip yoki qiymat

UncodeError

Yunikod belgilari bilan ishlashdagi hatolik

UncodeDecodeError

Yunikod belgilarini qayta kodlashdagi hatolik

UncodeEncodeError

Yunikod belgilarini qayta kodlashdagi hatolik

UncodeTranslateError

Yunikod belgilarini translyatsiya qilishdagi hatolik

Yuqorida aytilganidek, istisno qilinadigan holatlarning sodir boʻlishi dastur ishining toʻxtashiga olib keladi.


Istisno qilinadigan holatlar raise koʻrsatmasi yordamida qoʻzgʻatiladi. Umumiy holda bu koʻrsatma quyidagicha yoziladi:
raise exception([value]),
bu yerda exception – istisno qilinadigan holatning tipi, value – istisnoli holat haqidagi qoʻshimcha axborot beruvchi majburiy boʻlmagan qiymat. Masalan,
raise RuntimeError(“Tuzatib boʻlmaydigan hatolik”)
Bu koʻrsatma uchun namuna keltiramiz:
a,b=int(input()),int(input()) # avval 1, soʻngra 0 ni kiriting
if b==0:
raise RuntimeError("Tuzatib boʻlmaydigan hatolik")

Yuqoridagi dastur javobidan koʻrinib turibdiki, RuntimeError hatoligi yuzaga kelsa, bu haqda qoʻshimcha "Tuzatib boʻlmaydigan hatolik" ma’lumoti ham ekranga uzatiladi.
Agar raise koʻrsatmasi qoʻshimcha parametrlarsiz qoʻllansa, u oxirgi istisno qilinadigan vaziyatni takroran qoʻzgʻaydi.
Istisno qilinadigan holatlarni koʻrsatmagan holda ham raise dan foydalanish mumkin. Bu holda u faqat sodir boʻlgan holatni qayd etadi. Shuning uchun bu operatorni except blogida qoʻllash lozim.
try :
print('1'+1)
except:
raise

Istisno qilinadigan holatlarni try va except buyruqlari yordamida tutub qolish va qayta ishlash mumkin. Bu joʻrsatmalar umumiy holda quydagicha yoziladi:
try:
qandaydir amalni bajariish
except 1-hatolik tipi as oʻzharuvchi:
# 1-hatolikka mos qayta ishlash blogi
...
except 2-hatolik tipi as oʻzharuvchi:
# 1-hatolikka mos qayta ishlash blogi
...
except n-hatolik tipi as oʻzharuvchi:
# n-hatolikka mos qayta ishlash blogi
...
else :
# koʻrsatilgan istisnoli vaziyatlar sodir boʻlmasa bajariladigan blok
...
Masalan:
try:
f = open(‘fooʻ)
except IOError as e:
buyruqlar
Istisno qilinadigan vaziyat yuzaga kelganda interpretator oʻz ishini toʻhtatadi va boshqaruv sodir boʻlgan hatolikka mos except blogiga oʻtadi. Bu blokdagi buyruqlar toʻla bajarilganidan soʻng, dasturning ishi try-except blogidan keyin koʻrsatilgan buyruqlarning birinchisidan boshlab davom ettiriladi. Aks holda istisno qilinadigan vaziyat ichki try koʻrsatmasini oʻz ichiga olgan dastur kodiga uzatiladi. Ushbu kod oʻz navbatida boshqa try-except operatorlari ichida joylashgan boʻlishi mumkin. Agar istisno qilinadigan vaziyat dasturning eng yuqori bosqichiga oʻtganda ham tutib olinmasa interpretator oʻz ishini toʻhtatadi va ekranga tizimda nazarda tutilgan ma’lumotni chiqarib, oʻz ishini yakunlaydi.
Zarur hollarda, barcha tutib olinmagan hatoliklarni sys.excepthook() funksiyasi yordamida qayta ishlash mumkin.
Except buyrugʻida uchraydigan va majburiy boʻlmagan as var modifikatori yuzaga kelgan istisnoli vaziyatning tipi yoziladigan oʻzgaruvchini anglatadi. Hatoliklarni qayta ishlagichlar bu quymatlardan istisno qilinadigan vaziyat haqida toʻlaroq ma’lumot olish uchun foydalanishi mumkin. Masalan, yuzaga kelgan hatolik tipini aniqlash uchun isinstance() metodidan foydalanish mumkin.
Masalan:
try:
koʻrsatilgan amallarni bajarish
except IOError as e:
# kiritish-chiqarish hatoligini qayta ishlash
...
except TypeError as e:
# obyekt tipi bilan bogʻlik hatolikni qayta ishlash
...
except NameError as e:
# mavjud boʻlmagan nomga murojaat hatoligini qayta ishlash
...
Bir nechta istisno qilinadigan vaziyatlarni bitta qayta ishlagich yordamida qayta ishlash ham mumkin. Masalan:
try:
koʻrsatilgan amallarni bajarish
except (IOError, TypeError, NameError) as e:
# kiritish-chiqarish yoki tip hatoligi
# yoki mavjud boʻlmagan nomga murojaatni qayta ishlash
...
Istisno qilinadigan vaziyatlarni pass koʻrsatmasi yordamida inkor qilish mumkin. Quyidagi namunaga e’tibor bering:
try:
koʻrsatilgan amallarni bajarish
except IOError:
pass # hech qanday amalni bajarmaslik.
Dastur ishini toʻhtatib qoʻyishi mumkin boʻlgan barcha istisnoli vaziyatlarni Exception tipi orqali tutib qolish mumkin:
try:
koʻrsatilgan amallarni bajarish
except Exception as e:
yerror_log.write('hatolik yuaga keldi: %s\n’ % e)

Ihtiyoriy tipdagi istisno qilinadigan vaziyatlarni tipini koʻrsatmagan holda except yordamida tutib qolish mumkin.


try:
koʻrsatilgan amallarni bajarish
except:
error_log.write(‘Hatolik\n’)
Oxirgi try blogidan keyin else blogi uchrashi mumkin. Bu holda try jismida koʻrsatilgan ilistisno qilinadigan vaziyatlar sodir boʻlmaganda else blogi bajariladi. Masalan:
try:
f = open(‘fooʻ, ‘r’)
except IOError as e:
error_log.write(‘foo: faylini ochib boʻlmadi%s\n’ % e)
else:
data = f.read()
f.close()

Hatolik yuzaga kelganda ham, kelmaganda ham bajarilishi lozim boʻlgan buyruqlar blogi finally operatori yordamida koʻrsatiladi. Agar try blogida belgilangan hatoliklar sodir boʻlmasa, finally blogi ishga tushadi.


f = open(‘fooʻ,’r’)
try:
koʻrsatilgan amallarni bajarish
...
finally:
f.close()
# nima boʻlishidan qat’iy nazar, fayl yopiladi

Agar istisno qilinadigan vaziyat yuzaga kelib qolsa, boshqaruv finally blogining birinchi buyrugʻiga uzatiladi, son’gra shi vaziyatning oʻzi boshqa qayta ishlagich uchun takroran qoʻzgʻotiladi.



Download 2,94 Mb.

Do'stlaringiz bilan baham:
1   ...   42   43   44   45   46   47   48   49   ...   117




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