Обработка ошибок имен, вызванных недопустимыми параметрами в функциях Python

#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 .