Обработка исключений


Практика


Вспомним:

  • Что такое ошибка в Python?

  • Какие два типа ошибок выделяют?


Исключения (Exceptions) — это логические ошибки, возникающие во время выполнения кода (в отличие от синтаксических, которые возникают ДО выполнения кода)

Компьютер пытается сделать то, что мы его просим, но не может. Python готов к этому и обрабатывает такие ситуации — и выбрасывает (инициирует) исключение

3/0

~Traceback (most recent call last): # обратная трассировка
~  File "/home/runner/test/main.py", line 1, in <module>
~    3/0
~ZeroDivisionError: division by zero

Два подхода к обработке исключений:

  • LBYL (Look Before You Leap: "Посмотри, прежде чем прыгнуть")

  • Суть в том, чтобы проверить исключительную ситуацию перед выполнением действия

number = 10
divisor = 0
if divisor != 0:
	result = number / divisor
else:
	result = None 
# значение None для представления неопределенного состояния
  • EAFP (Easier to Ask for Forgiveness than Permission: "Проще попросить прощения, чем разрешения")

  • Если операция завершается неудачей, исключение будет перехвачено в блоке исключения

  • Конструкция try...except:

  • Что делать, если мы не знаем, какое исключение может возникнуть?

  • конструкции try-except-else-finally:

  • KeyboardInterrupt — тоже вид исключения, который можно обработать. Тогда команда Ctrl + C перестанет срабатывать.


Помимо перехвата исключений мы можем также выдавать (инициировать) исключения в коде:

  • raise — возбудить исключение

Практика

Last updated