Прихващане на изключения в 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)
Какво не е наред с този код? Коригирайте недостатъците му.