Module (85%)
Section (43%)

Некоторые полезные исключения

Давайте подробнее обсудим некоторые полезные (или, скорее, наиболее распространенные) исключения, с которыми Вы можете столкнуться.


ZeroDivisionError

Оно вызывается, когда Вы пытаетесь заставить Python выполнить любую операцию, которая выполняет деление, в котором делитель равен нулю или неотличим от нуля. Обратите внимание, что существует более одного оператора Python, который может вызвать это исключение. Вы можете угадать их все?

Да, вот они: /, // и %.


ValueError

Ожидайте этого исключения, когда имеете дело со значениями, которые могут быть неправильно использованы в каком-то контексте. Обычно это исключение возникает, когда функция (например, int() или float()) получает аргумент правильного типа, но его значение неприемлемо.


TypeError

Это исключение вызывается, когда Вы пытаетесь применить данные, тип которых не может быть принят в текущем контексте. Посмотрите на пример:

short_list = [1] one_value = short_list[0.5]

Вам не разрешается использовать значение с плавающей запятой в качестве индекса списка (то же правило применяется и к кортежам). TypeError - подходящее имя для описания проблемы и подходящее исключение, которое следует вызвать.


AttributeError

Это исключение возникает - среди других случаев - когда Вы пытаетесь активировать метод, которого нет в элементе, с которым Вы имеете дело. Например:

short_list = [1] short_list.append(2) short_list.depend(3)

В третьей строке нашего примера делается попытка использовать метод, которого нет в списках. Это место, где возникает AttributeError.


SyntaxError

Это исключение возникает, когда элемент управления достигает строки кода, нарушающей грамматику Python. Это может показаться странным, но некоторые ошибки такого рода невозможно идентифицировать без предварительного запуска кода. Такое поведение типично для интерпретируемых языков - интерпретатор всегда работает в спешке и не успевает просмотреть весь исходный код. Он удовлетворен проверкой кода, который в настоящее время выполняется. Пример такой категории проблем будет представлен очень скоро.

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