Python для новичков: Обработка исключений (try-except)

Исключения в Python – события, нарушающие обычный поток выполнения программы. Они могут привести к аварийному завершению программы, если не обработаны должным образом. Конструкция try-except позволяет обрабатывать исключения, предотвращая подобные сбои.

Что такое исключения?

Исключение возникает при непредвиденных событиях, например, делении на ноль. Пример:

10 / 0

Выполнение этой строки кода приведёт к ошибке ZeroDivisionError. Программа завершится с сообщением об ошибке. Без обработки исключений программа может зависнуть или закрыться.

Конструкция try-except

Конструкция try-except перехватывает и обрабатывает исключения, предотвращая аварийное завершение программы.

try:
    x = int(input())
    y = int(input())
    s = x / y
    print(s)
except ZeroDivisionError:
    print("Деление на ноль недопустимо!")
    s = 0
    print(s)

Блок try содержит код, который может вызвать исключение (ZeroDivisionError). Если исключение возникает, выполнение блока try прерывается, и управление передаётся блоку except. Блок except содержит код для обработки исключения. При делении на ноль выводится сообщение об ошибке, переменной s присваивается значение 0, и программа продолжает работу.

Идентификация и обработка исключений

Для успешной обработки исключений необходимо знать их названия. Названия ошибок выводятся в консоли или терминале при возникновении ошибки.

Примеры исключений:

  • ValueError: возникает при попытке преобразовать строку, не являющуюся числом, в число. Например: int("abc").
  • TypeError: возникает при попытке выполнить операцию с несовместимыми типами данных. Например: 2 + "1".
  • ZeroDivisionError: возникает при делении на ноль.

Расширенная обработка: несколько блоков except

Пользовательский ввод может содержать не только числа. Для более надёжной программы следует добавить обработку дополнительных исключений:

try:
    x = int(input())
    y = int(input())
    s = x / y
    print(s)
except ZeroDivisionError:
    print("Деление на ноль!")
    s = 0
    print(s)
except ValueError:
    print("Вы ввели не число!")
    x = 0
    y = 0
    s = 0

Этот пример обрабатывает ValueError, возникающий при вводе нечисловых данных.

Блоки else и finally

Помимо try и except, существуют блоки else и finally.

  • else: выполняется, если в блоке try не произошло исключений.
  • finally: выполняется всегда, независимо от возникновения исключения.
try:
    x = int(input())
    y = int(input())
    s = x / y
except ZeroDivisionError:
    print("Деление на ноль!")
    s = 0
except ValueError:
    print("Вы ввели не число!")
    x = 0
    y = 0
    s = 0
else:
    print("Все верно")
finally:
    print("Выполнение завершено")

Блок else выведет «Все верно» при успешном делении, а finally всегда выведет «Выполнение завершено».

Обработка исключений с помощью try-except важна для написания надёжных программ на Python. Она предотвращает аварийные завершения и обеспечивает корректное взаимодействие с пользователем, предоставляя информативные сообщения об ошибках. Для эффективной обработки необходимо уметь идентифицировать исключения по их именам.

Что будем искать? Например,программа