Программирование

Исключения: try, except, finally

Перехват ошибок, raise и оператор with.

Все уроки · Уроки Python: учимся с нуля

try и except

Исключение — это ошибка, возникающая во время работы. Если её не перехватить, программа остановится. Рискованный код помещают в try, а в except описывают реакцию. Перехватывайте как можно более конкретный тип.

def safe_divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return None

print(safe_divide(10, 2))   # 5.0
print(safe_divide(1, 0))    # None

else и finally

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

try:
    value = int("42")
except ValueError:
    print("not a number")
else:
    print("parsed", value)
finally:
    print("done")

Собственные ошибки

Если функция получила неверное значение, вызовите raise с понятным сообщением. Для точности можно создать собственный класс ошибки.

class NegativeAmount(Exception):
    pass

def withdraw(balance, amount):
    if amount < 0:
        raise NegativeAmount("amount must be positive")
    return balance - amount

try:
    withdraw(50, -5)
except NegativeAmount as err:
    print("Error:", err)
  • Не пишите голый except: — он скрывает баги.

Автор: Nibras Code