Pythonda istisnolar bilan ishlash
Agar kodimizda xatolik yuz bersa yoki istisno holatlar bo’lib qolsa Python bizga xatolik haqida xabar beradi. Bunday istisno holatlar bilan ishlash uchun try va except blokidagi amal bajariladi.
Masalan, biz x degan o’zgaruvchini ekranga chiqarmoqchi bo’lamiz. Lekin unday o’zgaruvchining o’zi yo’q bo’lsa xatolik yuz beradi va dastur ishlamaydi. Shuning uchun biz shunday qilamizki, agar x o’zgaruvchi mavjud bo’lmasa, bu haqida xabar berilsin:
try: print(x)
except:
print("x o'zgaruvchi mavjud emas")
x o'zgaruvchi mavjud emas
except kalit so’zini ishlatganimizda Python istalgan turdagi istisno holat uchun amal qiladi. Ammo biz qaysi turdagi istisno holatini tekshirishni o’zimiz belgilashimiz mumkin. Bunday holatlarning turlari ko’p, biz esa asosiylarini sanab o’tamiz:
NameError – murojaat qilinayotgan obyekt topilmasa, ishga tushadi.
ValueError – o’zgaruvchining qiymati unga mos bo’lmagan turda bo’lsa ishga tushadi. Masalan, biror harfli qiymatni son deb qabul qilmoqchi bo’lsak, shunday bo’ladi.
TypeError - o’zaro nomutanosib qiymatlar bilan amallar bajarilsa ishga tushadi. Masalan harfga son qo’shmoqchi bo’lganimizda.
ZeroDivisionError – Istalgan sonni nolga bo’lish holati bo’lganda ishga tushadi.
Hozir biror sonni nolga bo’lishni tekshiramiz.
Buni shunchaki except bilan ham yoki ZeroDivisionError bilan ta’kidlab ham tekshirish mumkin. Natija bir xil bo’ladi:
try: 5/0
except:
print("nolga bo'lish mumkin emas")
try: 7/0
except ZeroDivisionError:
print("nolga bo'lish mumkin meas")
nolga bo'lish mumkin emas nolga bo'lish mumkin meas
else
else kalit so’zi hech qanday xatolik yuz bermaganda bajariladigan amalni ko’rsatish uchun ishlatiladi:
try: print("Salom")
except:
print("Dasturda xatolik bor") else:
print("Hech qanday xatolik yo'q")
Salom
Hech qanday xatolik yo'q
finally
finally bloki ichida ko’rsatilgan amal xatolik bo’lishi yoki bo’lmasligidan qat’iy nazar bajariladi.
try:
print( x )
except:
print("x mavjud emas")
else:
print("Hech qanday xatolik yo'q") finally:
print("Tekshiruv tugadi")
x mavjud emas Tekshiruv tugadi
Istisno holatini hosil qilish
Dasturchi sifatida o’zimiz ham istisno holatini tuzishimiz mumkin. Buning uchun raise kalit so’zini ishlatamiz. Masalan, biror son agar noldan kichik bo’lsa dasturimiz xatolik haqida xabar berishi kerak bo’lsa:
x = -1
if x < 0:
raise Exception("Manfiy son aniqlandi")
raise kalit so’zi bilan qanday turdagi istisno holati bo’lishini ham o’zimiz belgilashimiz mumkin. Hozir TypeError istisnoli holatini tuzamiz. Bunda agar kiritilgan qiymati butun sonli o’zgaruvchi bo’lmasa xatolik haqida xabar berilsin:
x = "abc"
if type(x) is not int:
raise TypeError("Qiymat butun son bo'lishi kerak")
Dostları ilə paylaş: |