Хватање изузетака у 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)
Шта није у реду са овим кодом? Исправите његове недостатке.