#python #exception #error-handling #nameerror
Вопрос:
После определения функции и попробуйте/except/else операторы следующим образом:
def divide(a, b):
try:
a / b
except:
return False, 'Error occurred'
else:
return True, 'Division successful'
Исключение не возникает, если аргумент, заданный функции, является именем неопределенной переменной. Например:
divide(2, J)
вместо выполнения блока кода в инструкции except отображается следующая ошибка:
NameError: name 'J' is not defined
Я попытался переписать оператор except ( except NameError:
), но безрезультатно.
Я был бы признателен, если бы кто-нибудь объяснил, почему оператор except не выполняется в этом случае и как его выполнение может быть обеспечено в случае ошибки имени?
Комментарии:
1.
try
Блок находится внутри вашей функции; исключение возникает у вызывающего абонента при попытке оценить имяJ
еще до того , как ваша функция будет вызвана.
Ответ №1:
J
является переменной в вашем случае, которая не определена. Еще до запуска функции J
вызывается, но не существует, следовательно, ваша ошибка: имя «J» не определено. Я предполагаю, что вы хотите протестировать свою функцию, с divide(2, "J")
помощью которой параметр передается в виде строки. Это должно повысить, за исключением случаев, когда это необходимо.
Комментарии:
1. На самом деле, я попытался передать строковое значение функции перед отправкой вопроса и выполнением инструкции except. Спасибо вам за ваш ответ. Теперь ясно, что код никогда не доберется до выполнения самой функции.