Исключения в Python (Built-in Exceptions)
The original article in English is available here https://docs.python.org/2/library/exceptions.html
BaseException - базовый класс для всех встроенных исключений. Он и его простые потомки (SystemExit, KeyboardInterrupt,GeneratorExit) не предназначены для перехвата обыкновенным программистом — только Питон и редкие библиотеки должны работать с этими типами. Нарушение правила ведет, например, к тому что программу невозможно корректно завершить.
Все встроенные исключения не системного выхода (non-system-exiting exceptions) наследуются из этого класса. Все исключения, определенные пользователем, также должны быть выведены из этого класса.
SystemExit - исключение, порождаемое функцией sys.exit при выходе из программы.
KeyboardInterrupt - порождается при прерывании программы пользователем (обычно сочетанием клавиш Ctrl+C).
GeneratorExit - порождается при вызове метода close объекта generator.
На этом заканчиваются системные исключения (которые лучше не трогать) и начинаются обыкновенные, с которыми можно работать.
Исключение StandardError
Базовый класс для всех встроенных исключений, кроме StopIteration, GeneratorExit, KeyboardInterrupt and SystemExit . StandardError происходит от Exception .
Базовый класс для тех встроенных исключений, которые возникают из-за различных арифметических ошибок: OverflowError ,ZeroDivisionError , FloatingPointError .
Исключение OverflowError возникает, когда результат арифметической операции слишком велик для представления. Не появляется при обычной работе с целыми числами (так как python поддерживает длинные числа), но может возникать в некоторых других случаях.
ZeroDivisionError - попытка деления на ноль.
FloatingPointError - неудачное выполнение операции для чисел с плавающей запятой.
Исключение BufferError означает, что операция, связанная с буфером, не может быть выполнена.
Исключение StopIteration порождается встроенной функцией next, если в итераторе больше нет элементов.
AssertionError - выражение в функции assert ложно.
AttributeError - объект не имеет данного атрибута (значения или метода).
EOFError - ошибка чтения файла (функция дошла до конца файла и не смогла прочитать то, что требовалось).
ImportError - не удалось импортировать модуль или его атрибут.
Возникает, когда операция ввода / вывода не выполнима (“file not found” или “disk full”)
Возникает, когда ключ отображения (словаря) не найден в наборе существующих ключей.
Возникает, когда локальная или глобальная переменная не найдена. Это относится только к неполным именам. Соответствующее значение сообщения об ошибке включает в себя имя переменной, которая не может быть найдена.
Возникает, когда парсер встречает ошибку синтаксиса.
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 (небольшая статья с наглядными примерами).