Dinamik tiplashtirilgan


istisno qilinadigan vaziyat



Download 2,16 Mb.
bet29/56
Sana09.03.2022
Hajmi2,16 Mb.
#487710
1   ...   25   26   27   28   29   30   31   32   ...   56
Bog'liq
Ataxonov maruza

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,16 Mb.

Do'stlaringiz bilan baham:
1   ...   25   26   27   28   29   30   31   32   ...   56




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