为什么发生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 。