Обработка ошибок и исключений в Python. Часть 1
Как известно язык Python является интерпретируемым. Т.е. программа интерпретатора при каждом запуске считывает строки кода и переводит его в машинное представление. При этом выполнение кода может сопровождаться ошибочными выражениями или иначе ошибками времени выполнения. Данное обстоятельство приводит к остановке выполнения программы. Следующий код вызовет исключение.
print(1/0)
# вывод
# ZeroDivisionError: division by zero
Так как невозможно разделить 1 на 0, то программа остановится, и больше не сможет выполняться. Таким образом, возникает ошибка ZeroDivisionError. Для обработки подобных исключений в Python используется конструкция try-except. Если известно, что операция может вызвать исключение, то можно поместить ее в данный блок.
Блок try позволяет вам проверить блок кода на наличие ошибок.
Блок except позволяет вам обрабатывать ошибку.
Блок finally позволяет выполнять код независимо от результата блоков try- и except.
>>>nums=[1,2,3]
>>>nums[3]
# вывод
# IndexError: list index out of range
Здесь в списке всего 3 элемента. Значит, у них должны быть индексы от 0 до 2. Если мы попытаемся получить доступ к элементу с индексом 3, это вызовет ошибку IndexError, и программа остановится.
Но если мы перехватим это исключение в блоке except, программа продолжит выполнение со следующего оператора.
try:
nums[3]
except:
print('Out of index!')
# вывод
# Out of index!
Теперь все, что будет после этих строк, будет выполняться нормально.
В блок except мы можем поместить что угодно - присваивание, вызовы функций или что угодно еще. Также можем получить информацию об исключении, которое произошло, импортировав модуль sys.
try:
nums[3]
except:
print('Out of index!')
print(sys.exc_info())
# вывод
# Out of index!
# (<class 'IndexError'>, IndexError('list index out of range',), <traceback object at 0x009A2D78>)
Заключение.
Исключительные ситуации в программировании могут быть как ожидаемы так и неожиданны. Чтобы в процессе выполнения кода программа не прекращала работу и выполнялась корректно, ошибки должны обрабатываться. В языке Python также, как и во многих языках высокого уровня для этого используется конструкция try-exept.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.