Similar presentations:
Исключения в Python
1.
а также менеджер контекста…2.
Исключения - это извещения интерпретатора, возбуждаемые вслучае возникновения ошибки в программном коде или при
наступлении какого-либо события. Если в коде не
предусмотрена обработка исключения, то выполнение
программы прерывается, и выводится сообщение об ошибке.
1. Синтаксические - это ошибки в имени оператора или
функции, отсутствие закрывающей или открывающей кавычек
и т. д., т. е. ошибки в синтаксисе языка.
2. Логические - это ошибки в логике программы, которые
можно выявить только по результатам ее работы.
3. Ошибки времени выполнения - это ошибки, которые
возникают во время работы программы. Причиной являются
события, не предусмотренные программистом. Классическим
примером служит деление на ноль
2
3.
>>>print("Heт завершающей кавычки!)
SyntaxError: EOL while scanning string literal
>>>
def test(x, у) : return х/у
>>> test(4, 2) # Нормально
2.0
>>> test(4, 0) # Ошибка
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
test(4, 0) # Ошибка
File "<pyshell#2>", line 1, in test
def test(x, у): return х/у
ZeroDivisionError: division Ьу zero
3
4.
В языке Python исключения возбуждаются нетолько при ошибке, но и как уведомление о
наступлении каких-либо событий:
>>> "Строка".indех("текст")
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
"Строка".indех("текст")
ValueError: substring not found
4
5.
56.
Вложенные обработчики6
7.
Получение информации об исключении7
8.
На практике следует избегать пустых инструкций except, т. к.можно перехватить исключение, которое является лишь
сигналом системе, а не ошибкой!
Блок else и finally
Результат выполнения при
отсутствии исключения
Результат выполнения при
наличии исключения
8
9.
При наличии исключения и отсутствии блока except инструкциивнутри блока finally будут выполнены, но исключение не
будет обработано
9
10.
1011.
ЯзыкPython поддерживает протокол менеджеров
контекста. Этот протокол гарантирует выполнение
завершающих действий (например, закрытие файла)
вне зависимости от того, произошло исключение
внутри блока кода или нет. Для работы с протоколом
предназначена инструкция with ... as.
Метод __enter__ () вызывается после создания объекта.
Значение, возвращаемое этим методом, присваивается
переменной, указанной после ключевого слова as. Если
переменная не указана, возвращаемое значение игнорируется.
• Далее выполняются инструкции внутри тела инструкции
with. Если при выполнении возникло исключение, то
управление передается методу__exit__ ()
11
12.
1213.
Некоторые встроенные объекты поддерживаютпротокол по умолчанию - например, файлы. Если
в инструкции with указана функция open (), то
после выполнения инструкций внутри блока
файл автоматически будет закрыт.
13