Найти в Дзене
Langis программист

Исключения.

Исключения — один из двух основных типов ошибок в программировании. В отличие от синтаксических ошибок, которые возникают во время написания, исключения могут появиться во время выполнения программы. Примером такого различия может служить автомобиль: он может быть неисправен, что сделает путешествие на нем невозможным (подобно синтаксическим ошибкам), кроме того, водитель может не справиться с управлением, что приведет к ДТП уже во время поездки (подобно исключениям). В программировании же исключения приводят не к ДТП, а к полному прекращению или к неверному выполнению программ. Для избегания прекращения работы или получения дополнительной информации об ошибке используют конструкции обработки исключений. Типы исключений У каждого исключения есть собственный тип, который определяется тем, какая ошибка его вызвала, и дает возможность по-разному реагировать на различные виды ошибок. Рассмотрим некоторые типы исключений, которые могут возникнуть во время прохождения этого курса: ■ BaseEx

Исключения — один из двух основных типов ошибок в программировании. В отличие от синтаксических ошибок, которые возникают во время написания, исключения могут появиться во время выполнения программы. Примером такого различия может служить автомобиль: он может быть неисправен, что сделает путешествие на нем невозможным (подобно синтаксическим ошибкам), кроме того, водитель может не справиться с управлением, что приведет к ДТП уже во время поездки (подобно исключениям). В программировании же исключения приводят не к ДТП, а к полному прекращению или к неверному выполнению программ. Для избегания прекращения работы или получения дополнительной информации об ошибке используют конструкции обработки исключений.

Типы исключений

У каждого исключения есть собственный тип, который определяется тем, какая ошибка его вызвала, и дает возможность по-разному реагировать на различные виды ошибок. Рассмотрим некоторые типы исключений, которые могут возникнуть во время прохождения этого курса:

■ BaseException — базовый тип, из которого происходят все остальные, в том числе системные.

• Exception — базовый тип для «стандартных» и пользовательских исключений.

▫ ArithmeticError — арифметическая ошибка.

▫ OverflowError  — возникает, когда результат арифметической операции слишком велик для представления; На сегодняшний день практически невозможно получить OverflowError используя стандартную библиотеку Python, т.к. целые числа имеют динамическую длину и скорее вызовут MemoryError, а числа с плавающей запятой при пересечении граничных значений заменяются на 0.0, либо inf. Однако, эта ошибка может быть получена при работе со сторонними библиотеками или модулями, написанными на языках программирования с жесткой типизацией (числовые типы имеют четкие границы, выход за которые — ошибка). • ZeroDivisionError — деление на ноль.

■ ImportError — импортировать модуль или его атрибут не удалось;

■ LookupError — некорректный индекс или ключ: • IndexError — индекс не входит в диапазон элементов;

• KeyError  — несуществующий ключ (например, в словаре).

■ NameError — не найдено переменной с указанным именем;

■ RuntimeError — возникает, когда исключение не попадает ни под одну из других категорий;

■ SyntaxError — синтаксическая ошибка: • IndentationError — неправильные отступы:

▫ TabError  — смешивание в  отступах табуляции и пробелов.

■ TypeError — операция применена к объекту несоответствующего типа;

■ ValueError — функция получает аргумент правильного типа, но некорректного значения. Список предусмотренных самим языком программирования («встроенных») типов исключений гораздо больше и приведен в документации к языку. Кроме того, пользователи сами могут определять новые типы исключений в своих программах и библиотеках.

Перехват исключений

Для обработки исключений в Python используют конструкцию «try … except». В общем случае для построения этой конструкции необходимо:

■ открыть блок «try», введя соответствующую инструкцию и двоеточие;

■ указать набор инструкций, в результате работы которых может возникнуть исключение;

■ выделить набор инструкций отступом;

■ открыть блок «except», введя соответствующую инструкцию и двоеточие;

■ указать набор инструкций, которые нужно выполнить в случае возникновения исключения;

■ выделить набор инструкций отступом.

Вызов исключений

В Python мы можем не только перехватывать исключения, но и напрямую вызывать их. Для этого необходимо использовать ключевое слово «raise». С помощью «raise» мы можем указать, к какому типу будет принадлежать вызванное исключение

Вызов исключений может потребоваться в тех случаях, когда логика программы требует дополнительных условий. Например, в приведенном выше примере для программы не важно, будет введено 10 или -10, т.к. это целые числа, но мы с вами знаем что для обозначения количества предметов используются числа натуральные (1, 2, 3…) и ноль, следовательно, яблок никак не может быть -10.