Bir nechta istisnolardan tashqari holatlar
Bundan tashqari, bir nechta istisnolarni quyidagicha bajarish uchun, bundan tashqari bayonotdan foydalanish mumkin:
urinib ko'ring:
Siz bu erda o'z operatsiyalaringizni qilasiz
.........................
bundan mustasno (Istisno 1 [, Istisno2 [, ... IstisnoN]]]):
Agar berilgan istisnolar ro'yxatidan istisno bo'lsa,
keyin ushbu blokni bajaring.
.........................
Python 3
329
yana:
Istisno bo'lmasa, ushbu blokni bajaring.
Oxir oqibat
Siz nihoyat foydalanishingiz mumkin : blok bilan birga sinab ko'ring: blok. Nihoyat: blok qo'yish uchun joy
har qanday kod, bajarilishi kerak bo'lgan blok, istisnosiz yoki yo'qmi. Sintaksis
nihoyat sinash bayonnomasi bu
urinib ko'ring:
Siz o'zingizning operatsiyalaringizni bu erda bajarasiz;
.........................
Istisno tufayli bu o'tkazib yuborilishi mumkin.
nihoyat:
Bu har doim bajarilishi kerak edi.
.........................
Eslatma: Siz faqat (yoki) yoki oxirgi gapdan tashqari boshqa shartlarni ham berishingiz mumkin, lekin ikkalasini ham. Sen qila olmaysan
foydalanish boshqa shuningdek bo'ylab nihoyat bandda bilan moddasi.
Misol
#! / usr / bin / python3
urinib ko'ring:
fh = ochiq ("testfile", "w")
fh.write ("Bu istisnosiz ishlash uchun sinov faylim !!")
nihoyat:
bosib chiqarish ("Xato: fayl topa olmadi yoki ma'lumotlarni o'qiy olmaydi")
fh.close ()
Agar siz yozuv rejimida faylni ochishga ruxsatingiz bo'lmasa, bu natijani keltirib chiqaradi
quyidagi natija-
Xato: fayl topilmadi yoki ma'lumotlarni o'qiy olmadi
Xuddi shu misolni quyidagicha aniqroq yozish mumkin:
#! / usr / bin / python3
urinib ko'ring:
fh = ochiq ("testfile", "w")
urinib ko'ring:
fh.write ("Bu istisnosiz ishlash uchun sinov faylim !!")
Python 3
330
nihoyat:
bosib chiqarish ("Faylni yopish uchun ketmoqda")
fh.close ()
tashqari, IOError:
bosib chiqarish ("Xato: fayl topa olmadi yoki ma'lumotlarni o'qiy olmaydi")
Agar sinov blokida istisno bo'lsa , ijro darhol o'tadi
nihoyat blokirovka. Oxir-oqibat blokdagi barcha gaplar bajarilgandan so'ng, istisno
yana yuqoriga ko'tarilgan va keyingi yuqori sathda mavjud bo'lgan holatlar bundan mustasno
ning sinash-tashqari bayonotida.
Istisno dalili
Istisno qo'shimcha ma'lumot beradigan qiymat bo'lgan argumentga ega bo'lishi mumkin
muammo haqida. Dalilning mazmuni istisnolardan farq qiladi. Siz ushlaysiz
Istisno dalilidan tashqari, boshqa gapga o'zgaruvchini quyidagicha keltiring:
urinib ko'ring:
Siz bu erda o'z operatsiyalaringizni qilasiz
.........................
argument sifatida ExpressionType tashqari :
Argument qiymatini bu erda chop etishingiz mumkin ...
Agar siz bitta istisnoni hal qilish uchun kodni yozsangiz, siz o'zgaradigan nomga ega bo'lishingiz mumkin
istisno bayonotida istisno. Agar siz bir nechta istisnolarga duch kelsangiz, qila olasiz
o'zgaruvchisi istisnolarning ketma-ketligiga rioya qiling.
Ushbu o'zgaruvchi, asosan, sababini o'z ichiga olgan istisno qiymatini oladi
istisno. O'zgaruvchi bitta qiymatni yoki bir nechta qiymatlarni tup ko'rinishida qabul qilishi mumkin.
Ushbu satr odatda xato satrini, xato raqamini va xato joyini o'z ichiga oladi.
Misol
Quyida bitta istisno uchun misol keltirilgan.
#! / usr / bin / python3
# Bu erda funktsiyani aniqlang.
def temp_convert (var):
urinib ko'ring:
returnint (var)
argument sifatida ValueError tashqari:
chop etish ("Argumentda raqamlar mavjud emas \ n", Argument)
Bu erda # yuqoridagi qo'ng'iroq.
Python 3
331
temp_convert ("xyz")
Bu quyidagi natijalarni beradi -
Dalilda raqamlar mavjud emas
10 (bazasi) bo'lgan int () uchun haqiqiy bo'lmagan harf: 'xyz'
Do'stlaringiz bilan baham: |