перехват NameError и обработка ошибок

1

Я пишу функцию, которая принимает пользовательский ввод:

def func(input):

Я поставил try и excepts, чтобы убедиться, что входной файл имеет тип, который я хочу. Однако, когда я вставляю testInput, он выдает NameError vs "testInput".

Я понимаю, почему, поскольку он думает, что testInput является именем переменной, в то время как он знает, что "testInput" - это строка.

Есть ли разумный способ поймать эту ошибку?

  • 0
    Я не думаю, что здесь достаточно информации, чтобы адекватно ответить на ваш вопрос. Не могли бы вы привести реальный пример функции и код вызова?
Теги:
error-handling
nameerror

1 ответ

5

NameError обычно вызвано именем переменной undefined. Если вы используете testInput как имя переменной, т.е. Без кавычек, вы должны сначала определить его. Попробуйте что-то вроде этого:

testInput = "my_input_test"
func(testInput)

Или вы можете просто использовать строку как аргумент:

func("my_input_test")

Иногда опечатки могут также приводить к имени переменной undefined, а затем a NameError.

Похоже, что ваши операторы try ... except находятся внутри вашей функции, ошибка происходит до того, как тело функции выполнено, поэтому вы не можете зафиксировать ее внутри тела функции. Чтобы продемонстрировать, как эта ошибка может быть обнаружена, вы можете попробовать следующий код.

# !!! DEMO ONLY. DON'T DO THIS.
try:
    func(testInput)
except NameError:
    # Your code here

ВАЖНО: NameErrors обычно являются признаком того, что вам нужно исправить имена переменных/функций/классов. Использование try ... except для их обнаружения, как правило, является плохой практикой и приведет к беспорядочному и непригодному для использования коду.

  • 0
    поймать NameError не очень хорошая идея, NameError следует исправить код.
  • 0
    @JF Полностью согласен с тобой. Я упоминал об этом в моем последнем предложении.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню