Тестирование передачи аргументов с использованием конструкции try-except
На этом этапе вы узнаете, как использовать блоки try-except
для обработки потенциальных ошибок при передаче аргументов в функцию. Это особенно важно при работе с пользовательским вводом или внешними данными, где тип данных или формат могут отличаться от того, что ожидает функция.
Давайте модифицируем скрипт my_function.py
, чтобы включить обработку ошибок с использованием try-except
. Мы попытаемся вызвать функцию add_numbers
с некорректными аргументами и поймать возникающее исключение TypeError
.
Откройте файл my_function.py
в каталоге ~/project
с помощью редактора VS Code и измените его следующим образом:
## filename: ~/project/my_function.py
import inspect
def add_numbers(x: int, y: int = 10) -> int:
"""This function adds two numbers and returns the result."""
return x + y
try:
result = add_numbers("hello", 5)
print(f"Result: {result}")
except TypeError as e:
print(f"Error: {e}")
try:
result = add_numbers(5, "world")
print(f"Result: {result}")
except TypeError as e:
print(f"Error: {e}")
try:
result = add_numbers(5, 5)
print(f"Result: {result}")
except TypeError as e:
print(f"Error: {e}")
В этом модифицированном скрипте:
- Мы оборачиваем вызовы функции
add_numbers
в блоки try-except
.
- Мы пытаемся вызвать функцию
add_numbers
с передачей строки в качестве первого аргумента и целого числа в качестве второго аргумента.
- Мы пытаемся вызвать функцию
add_numbers
с передачей целого числа в качестве первого аргумента и строки в качестве второго аргумента.
- Мы пытаемся вызвать функцию
add_numbers
с передачей двух целых чисел в качестве аргументов.
- Если возникает исключение
TypeError
(что произойдет, когда мы передаем строку вместо целого числа), мы ловим это исключение и выводим сообщение об ошибке.
- Если исключение
TypeError
не возникает, мы выводим результат вызова функции.
Теперь запустите скрипт с помощью команды python
:
python ~/project/my_function.py
Вы должны увидеть следующий вывод:
Error: unsupported operand type(s) for +: 'str' and 'int'
Error: unsupported operand type(s) for +: 'int' and 'str'
Result: 10
Этот вывод демонстрирует, как блоки try-except
можно использовать для элегантной обработки ошибок, возникающих при передаче некорректных аргументов в функцию. Первые два вызова функции add_numbers
приводят к возникновению исключений TypeError
, которые ловятся и обрабатываются блоками except
. Третий вызов функции add_numbers
с передачей двух целых чисел выполняется успешно, и результат выводится на экран.
Использование блоков try-except
является рекомендуемой практикой при написании надежного и устойчивого к ошибкам кода. Это позволяет предвидеть потенциальные ошибки и обрабатывать их таким образом, чтобы программа не аварийно завершалась.