Ответ
В контексте Python, ошибки — это, как правило, фатальные проблемы, которые не предназначены для обработки в коде (например, синтаксические). Исключения — это события, возникающие во время выполнения, которые можно и нужно обрабатывать.
Все исключения являются наследниками базового класса BaseException
.
Ошибки (Errors)
Чаще всего под ошибками понимают те, что не наследуются от класса Exception
. Они сигнализируют о серьезных проблемах, которые программа обычно не может исправить.
SyntaxError
: Нарушение синтаксиса языка. Код не может быть даже скомпилирован в байт-код.IndentationError
: Частный случайSyntaxError
, связанный с неверными отступами.
Эти ошибки нужно исправлять в исходном коде, их нельзя обработать с помощью try...except
.
# SyntaxError: код не запустится
def my_function()
print("Hello, world!")
Исключения (Exceptions)
Это ошибки, которые возникают во время выполнения (runtime) синтаксически корректной программы. Их можно перехватить и обработать, чтобы предотвратить аварийное завершение программы.
ZeroDivisionError
: Деление на ноль.TypeError
: Операция применена к объекту неподходящего типа.KeyError
: Обращение к несуществующему ключу в словаре.
# Обработка исключения ZeroDivisionError
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Произошла ошибка: {e}. Деление на ноль недопустимо.")
result = 0
print(f"Результат: {result}") # Программа продолжит работу
Ключевое различие: синтаксические ошибки препятствуют запуску программы, а исключения возникают в процессе ее работы и могут быть обработаны для обеспечения стабильности.