Istisno turlari, try/except, aniq exception, else va finally, kiritishni tekshirish
9-sinfAdvanced Back-end va DevOps6-hafta · 17-darsDastur yiqilganda
Xatoni ushlash
To'g'ri bo'lguncha so'rash
Funksiya natijani qaysi operator bilan qaytaradi?
return.Dastur yiqilganda
int("abc") # ValueError
10 / 0 # ZeroDivisionError
[1, 2, 3][5] # IndexError
{"a": 1}["b"] # KeyError
open("yoq.txt") # FileNotFoundError
"5" + 3 # TypeError
int("abc") qaysi istisnoni chiqaradi?
ValueError.Xatoni ushlash
def bol(a, b):
try:
natija = a / b
except ZeroDivisionError:
return "Xato: 0 ga bo'lib bo'lmaydi!"
except TypeError:
return "Xato: sonlar kerak."
else:
return natija
finally:
print("hisob tugadi")
print(bol(10, 2)) # hisob tugadi / 5.0
print(bol(5, 0)) # hisob tugadi / Xato: 0 ga bo'lib bo'lmaydi!
print(bol("a", 2)) # hisob tugadi / Xato: sonlar kerak.
except: bilan ushlamang: dasturdagi haqiqiy xato yashirinib qoladi va uni topish qiyinlashadi.finally bloki qachon ishlaydi?
finally — doim.To'g'ri bo'lguncha so'rash
def yosh_ol():
while True:
matn = input("Yoshingiz: ")
try:
yosh = int(matn)
if yosh < 0:
raise ValueError("manfiy")
return yosh
except ValueError:
print("Xato: 0 yoki undan katta butun son kiriting.")
yosh = yosh_ol()
print("Siz kiritdingiz:", yosh)
raise ValueError(...) va int("abc") ikkalasi ham ValueError: shuning uchun bitta except ikkala holatni ushlaydi.while True + try andozasi nima uchun kerak?
Tashqi ma'lumotga ishonmang: tekshiring.
Dastur ishlashdagi kutilmagan holat
Xato haqida to'liq xabar
Xatoni ushlash bloki
Doim ishlaydigan blok
Qayerda xato bo'lishi mumkin?
Aniq istisnoni ushlang.
while True bilan.
| Istisno | Qachon | Misol |
|---|---|---|
ValueError | Qiymat noto'g'ri | int("abc") |
ZeroDivisionError | 0 ga bo'lish | 10 / 0 |
IndexError | Indeks yo'q | [1][5] |
KeyError | Kalit yo'q | d["x"] |
FileNotFoundError | Fayl topilmadi | open("yoq.txt") |
Pastga bosing: istisnolar
ValueError va ZeroDivisionError ni alohida ushlang.else da chiqaring, «tugadi» xabarini finally da chiqaring.son_ol() funksiyasini yozing.
try:
x = int(matn)
except:
pass
try:
x = int(matn)
except ValueError:
print("Butun son kiriting")
Xato — signal, uni boshqaring.
int("12a") qaysi istisnoni chiqaradi?else va finally qo'shing («hisob tugadi» doim chiqsin).d["x"] KeyError bermasligi uchun ikki usulni yozing.Turi, Traceback, sabab.
Aniq istisno, else, finally.
while True va raise.
Uyga vazifa: Xavfsiz kalkulyator va kiritishni tekshirish.
open, with, read va write
6-hafta · 18-dars