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 выделяется своей читаемостью и структурой.
Смотрите также
Вот некоторые хорошие дополнительные ресурсы для глубокого погружения:
- Официальная документация Python об ошибках и исключениях: Python Docs – Errors and Exceptions
- Руководство от Real Python по данной теме: Real Python - Блок try/except/else/finally
- Продуманное обсуждение лучших практик обработки ошибок: Stack Overflow – Как мне правильно игнорировать исключения?