【问题标题】:Why does the exception statement not executes when NameError occurs?为什么出现 NameError 时异常语句不执行?
【发布时间】:2021-05-26 20:59:40
【问题描述】:

通过以下方式定义函数和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,如何确保它的执行?

【问题讨论】:

  • try 块在您的函数内部;尝试评估名称 J 时,调用者会在调用函数之前引发异常。

标签: python exception error-handling nameerror


【解决方案1】:

J 在您的情况下是一个未定义的变量。甚至在函数运行之前,J 被调用但不存在,因此您的错误:未定义名称“J”。我假设您想使用 divide(2, "J") 测试您的函数,它将参数作为字符串传递。这应该会根据需要提高 except。

【讨论】:

  • 实际上,在发布问题并执行 except 语句之前,我尝试将字符串值传递给函数。谢谢您的答复。现在很明显,代码永远不会执行函数本身。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多