Исключения
@pyproglibПри анализе или исполнении кода иногда возникают ошибки или исключения. Например, это может произойти при попытке чтения файла, которого не существует. Хороший разработчик должен уметь ловить и обрабатывать их.
В Питоне определен главный класс BaseException, от которого наследуются все остальные классы ошибок. У него есть четыре прямых наследника:
- SystemExit – произошел выход из программы.
- KeyboardInterrupt – пользователь прервал выполнение программы (комбинация Ctrl+C).
- GeneratorExit – завершена работа объекта generator.
- Exception – родительский класс для пользовательских исключений.

От класса Exception наследуется больше десятка различных ошибок, которые может обработать программист. Вот лишь некоторые из них:
- IOError – ошибка ввода-вывода, например, «файл не найден».
- ImportError – ошибка импорта модуля.
- IndexError – обращение к несуществующему индексу последовательности.
- OSError – ошибка системы.
- SyntaxError – синтаксическая ошибка.
- TypeError – ошибка типа данных, например, функция вызывается с неподходящим по типу аргументом.
- ZeroDivisionError – деление на ноль.
Чтобы поймать и обработать исключения, нужно использовать конструкцию try – except – finally.

В блоке try размещается код, который должен быть выполнен. Блок except дает возможность поймать и обработать нужные ошибки. При необходимости можно добавить еще инструкцию finally, которая выполнится в любом случае.