Ошибки, сбои и другие бедствия
Все, что может пойти не так, пойдет не так.
Это закон Мерфи, и он работает везде и всегда. Выполнение Вашего кода тоже может пойти не так. Если это может произойти, это произойдет.
Посмотрите на код в редакторе. Есть по крайней мере два возможных пути, которыми он может пойти не так. Видите их?
- поскольку пользователь может вводить совершенно произвольную строку символов, нет гарантии, что строку можно преобразовать в значение с плавающей точкой - это первая уязвимость кода;
- вторая - функция
sqrt()
завершается ошибкой, если получает отрицательный аргумент.
Вы можете получить одно из следующих сообщений об ошибке.
Что-то вроде этого:
Enter x: Abracadabra
Traceback (most recent call last):
File "sqrt.py", line 3, in <module>
x = float(input("Enter x: "))
ValueError: could not convert string to float: 'Abracadabra'
output
Или что-то вроде этого:
Enter x: -1
Traceback (most recent call last):
File "sqrt.py", line 4, in <module>
y = math.sqrt(x)
ValueError: math domain error
output
Можно ли защитить себя от таких неожиданностей? Конечно можно. Более того, Вы должны сделать это, чтобы считаться хорошим программистом.