Объяснение из книги "
Python 3 и PyQt 5. Разработка приложений":
Исключения — это извещения интерпретатора, возбуждаемые в случае возникновения ошибки в программном коде или при наступлении какого-либо события. Если в коде не предусмотрена обработка исключения, выполнение программы прерывается, и выводится сообщение об ошибке. Существует три типа ошибок в программе:
- синтаксические — это ошибки в имени оператора или функции, отсутствие закрывающей или открывающей кавычек и т.д. — т.е. ошибки в синтаксисе языка. Как правило, интерпретатор предупредит о наличии ошибки, а программа не будет выполняться совсем. Пример синтаксической ошибки:
>>> print("Нет закрывающей кавычки!)
SyntaxError: EOL while scanning string literal
- логические — это ошибки в логике программы, которые можно выявить только по результатам её работы. Как правило, интерпретатор не предупреждает о наличии такой ошибки, и программы будет успешно выполняться, но результат её выполнения окажется не тем, на который мы рассчитывали. Выявить и исправить такие ошибки весьма трудно;
- ошибки времени выполнения — это ошибки, которые возникают во время работы программы. Причиной являются события, не предусмотренные программистом. Классическим примером служит деление на ноль:
>>> def test(x, y): return x / y
>>> test(4, 2) # Нормально
2.0
>>> test(4, 0) # Ошибка
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
test(4, 0)
File "<pyshell#2>", line 1 in test
def test(x, y): return x / y
ZeroDivisionError: division by zero
Необходимо заметить, что в Python исключения возбуждаются не только при возникновении ошибки, но и как уведомление о наступлении каких-либо событий. Например, метод index() возбуждает исключение ValueError, если искомый фрагмент не входит в строку:
>>> "Строка".index("текст")
Traceback (most recent call last):
File "<pyshell#5>", line 1 , in <module>
"Строка".index("текст")
ValueError: substring not found