Xatolarni to'g'ri ushlash โ ishonchli dastur yozishning asosi.
Asosiy sintaksis
try:
son = int(input("Son kiriting: "))
natija = 10 / son
print(f"Natija: {natija}")
except ValueError:
print("Xato: Raqam kiritilmadi!")
except ZeroDivisionError:
print("Xato: Nolga bo'lish mumkin emas!")
except Exception as e:
print(f"Kutilmagan xato: {e}")
else:
print("Xato bo'lmadi!")
finally:
print("Har doim ishlaydi")
Ko'p xato ushlash
try:
fayl = open("mavjud_emas.txt")
ma'lumot = fayl.read()
except (FileNotFoundError, PermissionError) as e:
print(f"Fayl xatosi: {e}")
O'z xatoni yaratish
class YoshXatosi(Exception):
def __init__(self, yosh):
self.yosh = yosh
super().__init__(f"Yosh {yosh} bo'lmasligi kerak emas!")
def tekshir_yosh(yosh):
if yosh < 0 or yosh > 150:
raise YoshXatosi(yosh)
return f"Yosh to'g'ri: {yosh}"
try:
print(tekshir_yosh(-5))
except YoshXatosi as e:
print(f"Xato: {e}")
Context manager (with)
# Fayl avtomatik yopiladi, hatto xato bo'lsa ham
with open("fayl.txt", "w") as f:
f.write("Xavfsiz yozish")
# O'z context manager
class VaqtOlchi:
def __enter__(self):
import time
self.boshlanish = time.time()
return self
def __exit__(self, *args):
import time
print(f"Vaqt: {time.time() - self.boshlanish:.3f}s")
with VaqtOlchi():
sum(range(1000000))
Logging
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug("Debug xabari")
logging.info("Ma'lumot")
logging.warning("Ogohlantirish")
logging.error("Xato!")
logging.critical("Kritik xato!")