Python:
Обработка ошибок

Как это сделать:

# Базовый блок try-except
try:
    # рискованный код
    number = int(input("Введите число: "))
except ValueError:
    # обработка ошибки
    print("Это не число!")

# Указание нескольких исключений
try:
    # код, который может вызвать разные исключения
    result = 10 / int(input("Введите делитель: "))
except ZeroDivisionError:
    print("Ой! Нельзя делить на ноль.")
except ValueError:
    print("Мне нужно число, дружище.")

# Использование else и finally
try:
    number = int(input("Введите число для возведения в квадрат: "))
except ValueError:
    print("Я сказал число!")
else:
    # ошибок не произошло
    print("Ваше число в квадрате:", number**2)
finally:
    # выполняется всегда
    print("Спасибо, что попробовали это!")

Пример вывода при вводе недопустимого числа для первого блока:

Введите число: привет
Это не число!

Подробнее

С самого начала программирования, обработка ошибок была критически важна. Ранние подходы были элементарными, например, проверка условий перед каждой рискованной операцией. Синтаксис try-except Python произошел от наследия обработки исключений в более старых языках, таких как C++ и Java, упрощая процесс.

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

else и finally – дополнения к этой концепции. Блок else выполняется, если в блоке try не возникло ошибок. finally – это надежный друг, который выполняется в любом случае – подумайте о операциях по очистке.

Альтернативы? Конечно, они есть. Некоторые языки используют коды возврата вместо исключений. Вы также можете столкнуться с операторами with для обработки ресурсов или assertions, которые проверяют условия во время разработки. Но когда мы говорим об надежных стратегиях обработки ошибок, модель try-catch выделяется своей читаемостью и структурой.

Смотрите также

Вот некоторые хорошие дополнительные ресурсы для глубокого погружения: