Обработка исключений

Обновлено: 2024-03-12
2 мин

Содержание

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

В Python эта конструкция исключений обычно обернута в так называемый try/except.

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

try:
    x = int(input("Введите число: "))
    result = 100 / x
except ZeroDivisionError:
    print("Деление на ноль!")
else:
    print(f"Результат: {result}")
finally:
    print("Конец программы")

В этом примере программа просит пользователя ввести число, которое будет использоваться в делении на 100. Если пользователь вводит 0, то возникает исключение ZeroDivisionError, которое обрабатывается блоком except.

В случае, если исключение не возникает, программа выполняет блок else. Независимо от того, возникает исключение или нет, блок finally всегда будет выполнен.

Кроме того, вы можете использовать несколько блоков except для обработки разных типов исключений.

try:
    x = int(input("Введите число: "))
    result = 100 / x
except ZeroDivisionError:
    print("Деление на ноль!")
except ValueError:
    print("Неверный формат числа!")
else:
    print(f"Результат: {result}")
finally:
    print("Конец программы")

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

В Python используются операторы raise и assert, которые позволяют вызвать исключение в явном виде, когда это необходимо.

Пример использования оператора raise:

x = -1
if x < 0:
    raise ValueError("Число должно быть положительным!")

Пример использования оператора assert:

x = 10
assert x < 0, "Число должно быть отрицательным!"

Оператор assert проверяет истинность заданного выражения, и если оно является ложным, вызывает исключение AssertionError.