NotImplementedError – klassning abstrakt metodlar o‘z bo‘ysinuvidagi boshqa klasslarda qayta aniqlashni talab qilganda yuzaga keladi.
SyntaxError – sintaktik xatolik.
IndentationError – xato bo‘sh joy tashlashdan iborat (siljishlar).
TabError – siljishlarda bo‘sh joy tashlash hamda tabulyatsiya belgilarining aralashtirilishi.
SystemError – ichki xatolik.
TypeError – amal mos kelmaydigan tipli obyektga 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 xato-lik.
UnicodeEncodeError – unikod kodlash bilan bog‘liq xatolik.
UnicodeDecodeError – inikod dekodlash bilan bog‘liq xatolik.
UnicodeTranslateError – unikod tarjimasi bilan bog‘liq xatolik.
Endi qachon va qanday vaziyatlarda noodatiy holatlar yuzaga kelishini bilgan holda, biz ularni qay-ta ishlashimiz mumkin bo‘ladi. Noodatiy holatlarni qayta ishlash uchun try/except konstruksiyasi qo‘llaniladi.
61
Ushbu konstruksiyadan foydalanishga birinchi misol:
k = 1 / 0
except ZeroDivisionError:
k = 0
0
try 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 avlod-lari ham tutib qolinadi. Masalan, ArithmeticErrorni ushlab qolish oqibatida biz FloatingPoint-Error, OverflowError va ZeroDivisionErrorlarni ham ushlab qolamiz.
k = 1 / 0
except ArithmeticError:
k = 0
0
Bundan tashqari yuzaga kelishi mumkin bo‘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 except ko‘rsatmasi deyarli qo‘llanilmaydi, uning o‘rniga except Exceptiondan foydalaniladi. Lekin, aksariyat hollarda noodatiy holatlarni bitta holat uchun qayta ishlashga harakat qilinadi, chunki, aks holda siz kutgan noodatiy holat o‘rniga bosh-qasi yuzaga kelishi mumkin bo‘lgan noodatiy holatning ushlab olinishi va u xato sifatida qayta ishlanishi mumkin.
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.
62
Do'stlaringiz bilan baham: |