Гунаҳои гуногуни истисноҳоро дар Python қабз кардан
Дар як код мумкин аст, ки зарурати қабзи гуногуни истисноҳо пайдо шавад.
Фарз мекунем, ки мо бояд истиснои тақсим бар сифрро қабз кунем. Дар чунин навъи хато истиснои зерин рӯй медиҳад:
ZeroDivisionError: division by zero
Барои қабзи он, номи истисноро дар блоки except нависед:
try:
print(1 / 0)
except ZeroDivisionError:
print('хато: бар сифр тақсим накунед')
Инчунин фарз мекунем, ки мо рӯйхати зеринро дорем:
lst = [1, 2, 3]
Агар дар блоки try коди бо хатои дигари эҳтимолӣ, масалан, бо баровардани унсури мавҷуднабуда, гузошта шавад, он гоҳ истисное, ки дар блоки except қабз нашудааст, гузашта, ба консоли хориҷӣ меравад ва кори кодро бозмедорад:
lst = [1, 2, 3]
try:
print(lst[4]) # IndexError: list index out of range -ро хориҷ мекунад
except ZeroDivisionError:
print('хато: бар сифр тақсим накунед')
Барои ҳалли чунин вазъят, дар ҳар як блок номи намуди мувофиқи истисноҳоро мушаххас кунед. Биёед ба коди мо истиснои унсури мавҷуднабударо илова кунем:
try:
print(lst[4])
except ZeroDivisionError:
print('хато: бар сифр тақсим накунед')
except IndexError:
print('хато: унсур мавҷуд нест')
Коди зерин дода шудааст:
txt = '2'
res1 = txt + 3
res2 = txt1
Кодро нависед, то истисноҳои дар тағирёбандаҳои res1 ва res2 нишон додашударо қабз кунед.