Обработка нескольких исключений
Блок кода потенциально может вызвать различные типы исключений. Python позволяет обрабатывать несколько исключений, используя несколько операторов except или группируя исключения в одном операторе except.
Давайте напишем скрипт, который выполняет деление. Эта операция может вызвать ValueError, если ввод не является числом, и ZeroDivisionError, если делитель равен нулю.
В WebIDE откройте файл ~/project/handle_multiple_exceptions.py и добавьте следующий код. Эта версия использует отдельные блоки except для каждого типа ошибки.
try:
numerator = int(input("Enter the numerator: "))
denominator = int(input("Enter the denominator: "))
result = numerator / denominator
print(f"Result: {result}")
except ValueError:
print("Invalid input. Please enter integers only.")
except ZeroDivisionError:
print("Error: Division by zero is not allowed.")
Сохраните файл и запустите его из терминала:
python ~/project/handle_multiple_exceptions.py
Протестируйте скрипт с различными входными данными, чтобы вызвать каждое исключение:
- Введите нецелое значение (например,
abc).
- Введите
0 в качестве делителя.
- Введите допустимые целые числа для обоих операндов.
Пример вывода при делении на ноль:
Enter the numerator: 10
Enter the denominator: 0
Error: Division by zero is not allowed.
Вы также можете обрабатывать несколько исключений с помощью одного оператора except, группируя их в кортеж (tuple). Это полезно, когда для разных ошибок требуется выполнить одно и то же действие.
Теперь обновите код в ~/project/handle_multiple_exceptions.py, чтобы использовать этот сгруппированный подход:
try:
numerator = int(input("Enter the numerator: "))
denominator = int(input("Enter the denominator: "))
result = numerator / denominator
print(f"Result: {result}")
except (ValueError, ZeroDivisionError):
print("An error occurred: Invalid input or division by zero.")
Сохраните файл и запустите его снова с теми же тестовыми случаями, чтобы увидеть новое, объединенное сообщение об ошибке.