#python #function #error-handling #parameter-passing #nameerror
#python #функция #обработка ошибок #передача параметров #ошибка имени
Вопрос:
Итак, я объявил функцию с параметрами, которые принимают аргументы, например;
def getNumber(number = None, minimum = None, maximum = None):
, но я не знаю, как перехватывать и обрабатывать ошибки имен, возникающие, когда пользователь передает в них недопустимые параметры.
Например, пользователь вызывает функцию like getNumber(apples)
. яблоки — это просто заполнитель, пользователь может ввести любую нестроковую / нечисловую. Обратите внимание, что слово apples не является строкой. При запуске кода выводится: Трассировка (последний последний вызов):
File "<pyshell#0>", line 1, in <module>
getNumber(apples)
NameError: name 'apples' is not defined
Как бы я мог перехватить и обработать возникающую ошибку имен?
Комментарии:
1. Зачем тебе что-то с этим делать? Это их код неисправен.
2. Да, но по какой-то причине я все еще отмечаю это
3. Звучит неправильно, возможно, вы захотите рассказать нам больше о том, что вы делаете.
4. Функция принимает число, введенное пользователем (присвоенное параметру «number»), и два необязательных аргумента для минимального и максимального размера. после проверки того, что число находится в пределах диапазона, оно преобразует его в целое число и возвращает его
5. Главное здесь: вы хотите перехватить ошибку еще до того, как дойдете до любого написанного вами кода. Вы не можете.
Ответ №1:
при вызове функции вызовите ее следующим образом
try:
getNumber(number, minimum, maximum)
except:
print("Please pass in valid arguments")
Если приведенный аргумент неверен или неверен, он распечатает statment, который записан в except:
блоке
Комментарии:
1. можете ли вы поделиться написанным вами кодом
Ответ №2:
Если вы хотите перехватить переменные, такие как apple, которые не определены, используйте что-то вроде приведенного ниже:
>>> def getNumber(number = None, minimum = None, maximum = None):
... pass
...
>>>
>>> try:
... getNumber(apples)
... except NameError as e:
... print("ERROR {}. Please use proper variable.".format(e))
...
ERROR name 'apples' is not defined. Please use proper variable.
Комментарии:
1. Что вы хотите сделать после обнаружения ошибки? @Roden2019
2. Просто отправьте сообщение об ошибке с указанием использовать правильные значения и выполнить цикл функции
3. @Roden2019 Я добавил полный рабочий пример из интерпретатора python.
4. @Roden2019 Если эта функция вызывается внутри цикла, и вы хотите, чтобы этот цикл продолжался даже после ошибки, вам следует использовать оператор continue внутри блока except .