Перахоп выключэнняў у Python
У Python у параўнанні з іншымі мовамі праграмавання вельмі многа сітуацый, якія выклікаюць выключэнні.
Давайце разгледзім іх падрабязней. Хай у нас ёсць спіс:
lst = [1, 2, 3]
Звернемся да неіснуючага элемента спісу:
print(lts[4])
Пасля выканання кода выведзецца памылка (выключэнне):
IndexError: list index out of range
Калі ж нам трэба працягнуць працу без
вываду выключэння, яго варта злавіць з
дапамогай канструкцыі try-except. Яна
мае наступны сінтаксіс:
try:
# код, які выклікае выключэнне
except:
# апрацоўка памылкі
У блоку try варта размяшчаць код,
які можа ўтрымліваць выключэнне. Калі
раптам пры выкананні гэтага кода ўзнікне
выключная сітуацыя, то выкананне
кода не спыніцца, а перайдзе ў код блока
except. У гэтым блоку варта
прапісаць вывад паведамлення, максімальна
дакладна апісваючага суць узнікшай памылкі.
Калі ж пры выкананні блока try
ніякіх выключных сітуацый не здарылася,
то карысны код проста выканаецца, а код
з блока except - не.
Давайце зловім наша выключэнне пры звароце
да неіснуючага элемента спісу. Для
гэтага ў блок try размясцім код з
патэнцыйнай памылкай. А ў блоку except
пакажам вывад у кансоль паведамлення 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Пасля выканання кода выведзецца:
'error: elem is not exist'
Пасля вывучэння канструкцыі try-except
стыль напісанага вамі кода павінен змяніцца.
Цяпер усе месцы, у якіх можа ўзнікнуць
выключная сітуацыя, трэба абгортваць
у try, а ў блоку except
прапісваць рэакцыю на гэта выключэнне.
Спытайце ў карыстальніка два лікі. Падзеліце адно на другое. Злавіце выключную сітуацыю дзялення на нуль.
Спытайце ў карыстальніка лік. Знайдзіце квадратны корань з гэтага ліку. Злавіце выключную сітуацыю вымання кораня з адмоўнага ліку.
Дадзены спіс. Спытайце ў карыстальніка цэлы лік. Атрымайце элемент спісу, нумар якога ўвёў карыстальнік. Злавіце выключную сітуацыю, якая здарыцца, калі карыстальнік увёў лік па-за дыяпазонам спісу.
Дадзены наступны код:
num = '5'
res = num + 2
print(res)
Што не так з гэтым кодам? Выправіце яго недахопы.
Дадзены наступны код:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Што не так з гэтым кодам? Выправіце яго недахопы.