Инструкция try…except…else…finally. Получение информации об исключении. Классы встроенных исключений. Пользовательские исключения. Обработка исключений — это замена стандартного вывода ошибки своим сообщением так, чтобы программа не «вылетала» при появлении исключения.
Традиционным способом обработки исключений является инструкция tr y ... except:
tr y :
<что должно выполняться>
e x c e p t <имя исключения> [as <псевдоним>]:
<что должно выполняться при возникновении ошибки>
[ex cep t <имя исключения> [as <псевдоним>]:
<что должно выполняться при возникновении ошибки> ...]
# e x c e p t может быть несколько
[e ls e :
<что должно выполняться, если исключение не произошло>]
[finally:
в ы п о л н я е т с я в любом случае>]
Информация об исключении выдается при возникновении ошибки интерпретатором. Также можно получить информацию о типе ошибки непосредственно в обработчике исключений посредством использования псевдонима.
Встроенные исключения
Exception — базовое исключение, на котором строятся остальные исключения.
Attribute Error — возникает при невозможности присвоить значение или создать ссылку на атрибут.
Ю Error — ошибка ввода/вывода (Input/Output)
Import Error — связана с операцией импортирования, например, не найден модуль.
Index Error — ошибка выхода индекса последовательности за пределы диапазона (Out of range).
Key Error — ошибка при отсутствии ключа в словаре.
Name Error — не найдено запрашиваемое имя (например, variable Т is not defined).
Sintax Error — ошибка синтаксиса.
Value Error — тип переменной правильный, но передаваемое значение — нет.
Type Error — возникает, когда операция или функция применяется к объекту несоответствующего типа.
Zero Division Error — ошибка деления на ноль.
В Python пользователи могут определять свои собственные исключения, создавая новый класс. Этот класс исключений должен прямо или косвенно быть производным от встроенного класса Exception. Большинство встроенных исключений также являются производными от этого класса. Все пользовательские исключения также должны быть производными от этого класса.
Пользовательские исключения полезны тем, что их можно вызвать с неправильными или неожиданными выходными данными, тем самым лучше прояснив ситуацию с кодом, который падает или неправильно работает.
В примере создается определяемое пользователем исключение Custom Error(), которое наследуется от класса Exception. Это новое исключение, как и другие исключения, может быть вызвано с помощью оператора raise с дополнительным сообщением об ошибке.Пользовательский класс исключений может реализовать все, что может делать обычный класс, но обычно их делают простыми и краткими. Большинство реализаций пользовательских исключений объявляют настраиваемый базовый класс и наследуют другие классы исключений из этого базового класса.
Большинство пользовательских исключений определяются именами, которые заканчиваются на "Error", аналогично именованию стандартных исключений.