Handling Exceptions

Python istisnolarni tutish uchun maxsus sintaksis bilan birga keladi.

SU

Istisnolarni boshqarish

Python istisnolarni tutish uchun maxsus sintaksis bilan birga keladi. Bu try/except operatori deb ataladi.

Quyida istisnolarni tutish uchun foydalaniladigan asosiy shakl keltirilgan:

1 try:
2     # Bu yerda istisno keltirishi mumkin bo'lgan kod yoziladi
3 except ImportError:
4     # Istisno sodir bo'lganda bajariladigan kod

Siz muammo bo'lishi mumkin bo'lgan kodni try blokiga joylashtirasiz. Bu faylni ochadigan yoki foydalanuvchidan kiritma oladigan kod bo'lishi mumkin. Ikkinchi blok except bloki deb ataladi. Yuqoridagi misolda except bloki faqat ImportError istisnosi keltirilganida bajariladi.

Agar except operatorini istisno turini ko'rsatmasdan yozsangiz, bu "yalang'och istisno" deb ataladi. Bu tavsiya etilmaydi:

1 try:
2     with open('example.txt') as file_handler:
3         for line in file_handler:
4             print(line)
5 except:
6     print('Xato yuz berdi')

"Yalang'och except" yaratish yomon amaliyot hisoblanadi, chunki siz qanday turdagi istisnolarni tutayotganingizni va ular qayerda sodir bo'layotganini bilmay qolasiz. Bu nima noto'g'ri bo'lganini tushunishni qiyinlashtiradi. Agar siz istisnolarni faqat o'zingiz yecha oladigan turlarga cheklasangiz, kutilmagan istisnolar aslida foydali xabar bilan ilovangizni to'xtatib qo'yadi. O'sha paytda siz boshqa istisnoni tutmoqchi ekanligingizni yoki yo'qligini hal qilishingiz mumkin.

Faraz qilaylik, siz bir nechta istisnolarni tutmoqchisiz. Mana buni amalga oshirish usuli:

1 try:
2     with open('example.txt') as file_handler:
3         for line in file_handler:
4             print(line)
5     import something
6 except OSError:
7     print('Xato yuz berdi')
8 except ImportError:
9     print('Noma'lum import!')

Bu istisnoni boshqaruvchi ikkita turdagi istisnolarni tutadi: OSError va ImportError. Agar boshqa turdagi istisno yuzaga kelsa, bu boshqaruvchi uni tutmaydi va kodingiz to'xtaydi.

Yuqoridagi kodni biroz sodda qilib yozishingiz mumkin:

1 try:
2     with open('example.txt') as file_handler:
3         for line in file_handler:
4             print(line)
5     import something
6 except (OSError, ImportError):
7     print('Xato yuz berdi')

Albatta, istisnolarni tuple shaklida yaratish qaysi istisno sodir bo'lganini tushunishni qiyinlashtiradi. Boshqacha qilib aytganda, bu kod qaysi muammo aslida yuzaga kelganini aniqlashni murakkablashtiradi.

Last updated on

On this page

Xato haqida xabar berish