Все ошибки в языке Python делятся на два типа:
- синтаксические ошибки;
- исключения - ошибки, которые возникают в процессе исполнения кода.
Когда мы запускаем файл целиком на исполнение, то интерпретатор для начала проверяет его полностью на синтаксические ошибки. Синтаксические ошибки - это единственные ошибки о которых можно узнать до исполнения самого кода.
Ошибки также являются объектами и поэтому у любой ошибки есть тип:
- IndexError - мы пытались взять индекс, которого нет в списке.
- NameError - это такая ошибка, которая встречается, когда мы не можем найти имя в пространстве имен.
- TypeError - мы вероятно передали в какую-нибудь функцию, что-нибудь неправильного типа.
Ошибка хранит в себе состояние стека вызова на тот момент, когда совершилась ошибка.