为什么发生NameError时异常语句不执行?
Why does the exception statement not executes when NameError occurs?
按以下方式定义函数和 try/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语句,以及在NameError的情况下如何确保执行它,我将不胜感激?
J
在您的案例中是一个未定义的变量。甚至在函数运行之前, J
正在被调用但不存在,因此您的错误:名称 'J' 未定义。我假设您想使用 divide(2, "J")
测试您的函数,它将参数作为字符串传递。那应该根据需要提高 except 。
按以下方式定义函数和 try/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语句,以及在NameError的情况下如何确保执行它,我将不胜感激?
J
在您的案例中是一个未定义的变量。甚至在函数运行之前, J
正在被调用但不存在,因此您的错误:名称 'J' 未定义。我假设您想使用 divide(2, "J")
测试您的函数,它将参数作为字符串传递。那应该根据需要提高 except 。