Исключения в Python (Built-in Exceptions)

Исключения в Python (Built-in Exceptions)

The original article in English is available here https://docs.python.org/2/library/exceptions.html

Исключение BaseException  

BaseException - базовый класс для всех встроенных исключений. Он и его простые потомки (SystemExit, KeyboardInterrupt,GeneratorExit) не предназначены для перехвата обыкновенным программистом — только Питон и редкие библиотеки должны работать с этими типами. Нарушение правила ведет, например, к тому что программу невозможно корректно завершить.

Исключение Exception

Все встроенные исключения не системного выхода (non-system-exiting exceptions) наследуются из этого класса. Все исключения, определенные пользователем, также должны быть выведены из этого класса.

SystemExit - исключение, порождаемое функцией sys.exit при выходе из программы.

KeyboardInterrupt - порождается при прерывании программы пользователем (обычно сочетанием клавиш Ctrl+C).

GeneratorExit - порождается при вызове метода close объекта generator.

На этом заканчиваются системные исключения (которые лучше не трогать) и начинаются обыкновенные, с которыми можно работать.

Исключение StandardError

Базовый класс для всех встроенных исключений, кроме StopIterationGeneratorExitKeyboardInterrupt and SystemExit . StandardError происходит от Exception .

Исключение ArithmeticError 

Базовый класс для тех встроенных исключений, которые возникают из-за различных арифметических ошибок: OverflowError ,ZeroDivisionError , FloatingPointError .

  • Исключение OverflowError возникает, когда результат арифметической операции слишком велик для представления. Не появляется при обычной работе с целыми числами (так как python поддерживает длинные числа), но может возникать в некоторых других случаях.

  • ZeroDivisionError - попытка деления на ноль.

  • FloatingPointError - неудачное выполнение операции для чисел с плавающей запятой.

Исключение BufferError означает, что операция, связанная с буфером, не может быть выполнена.

Исключение StopIteration порождается встроенной функцией next, если в итераторе больше нет элементов.

AssertionError - выражение в функции assert ложно.

AttributeError - объект не имеет данного атрибута (значения или метода).

EOFError - ошибка чтения файла (функция дошла до конца файла и не смогла прочитать то, что требовалось).

ImportError - не удалось импортировать модуль или его атрибут.

Исключение IOError 

Возникает, когда операция ввода / вывода не выполнима (“file not found” или “disk full”)

Исключение KeyError 

Возникает, когда ключ отображения (словаря) не найден в наборе существующих ключей.

Исключение NameError 

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

Исключение SyntaxError  

Возникает, когда парсер встречает ошибку синтаксиса. 

  • IndentationError - неправильные отступы.

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

SystemError - внутренняя ошибка системы.

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

ValueError - функция получает аргумент правильного типа, но некорректного значения.

UnicodeError - ошибка, связанная с кодированием / декодированием unicode в строках.

UnicodeEncodeError - исключение, связанное с кодированием unicode.

UnicodeDecodeError - исключение, связанное с декодированием unicode.

UnicodeTranslateError - исключение, связанное с переводом unicode.

Warning - предупреждение.

Подробную классификацию, а так же иерархию исключений можно изучить здесь:

https://docs.python.org/2/library/exceptions.html (документация, на английском)

http://pythonworld.ru/tipy-dannyx-v-python/isklyucheniya-v-python-konstrukciya-try-except-dlya-obrabotki-isklyuchenij.html (небольшая статья с наглядными примерами).