NameError: 在函数中使用try/except时未定义全局名称'AlreadyExists

2 投票
2 回答
1138 浏览
提问于 2025-04-17 04:03

我知道很多类似的问题已经存在,但我找不到一个能解决我现在遇到的问题。

我有以下代码:

def function():
  try:
    # function to create a table on hbase
  except AlreadyExists, ae:
    print "WARN: " + ae.message 

当我从另一个Python脚本调用它时,它给我返回了

NameError: global name 'AlreadyExists' is not defined 

...但是如果我把def function()去掉,单独运行它,就能正常工作,也不会报全局名称的错误。

我试着加了global AlreadyExists,但还是不行。我还看了这个类似的问题,但我不太确定怎么应用,因为它单独运行时没问题(不需要我导入任何特定的东西),但一旦我把它放在一个函数里,就出错了。

有什么建议吗?

2 个回答

1

from hbase import ttypes   

...

except AlreadyExists, ae:

改为

except ttypes.AlreadyExists, ae:

http://www.ros.org/doc/api/hbase/html/classhbase_1_1ttypes_1_1AlreadyExists.html

2

Python 只有在出现错误的时候才会去查找这个名字。当你在函数外面运行代码时,可能没有出现错误,所以你觉得代码是正常工作的。

你需要从相应的地方导入 AlreadyExists 这个错误类型。

撰写回答