python:从函数返回异常

新手上路,请多包涵

假设我有以下功能:

 def test():
  ...
  if x['error']:
    raise

无论 x['error'] 是否定义,这都会引发异常。

相反,如果我尝试这样做,它不会抛出任何异常:

 def test():
  ...
  try:
    if x['error']:
      raise
  except:
    return

如何测试特定值并在已定义的情况下返回异常,如果未定义则成功返回?

原文由 Subbeh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 568
2 个回答
def test():
  ...
  if x.get(‘error’):
    raise

您可以使用字典的内置 get 函数避免无意中引发错误。如果指定键的值不存在,Get 将返回 None 而不是抛出异常。

原文由 Philip DiSarro 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您想将错误作为字符串返回:

 >>> def test():
    try:
        if x['error']:raise
    except Exception as err:
        return err

>>> test()
NameError("name 'x' is not defined",)

如果你想发生错误:

 >>> def test():
    try:
        if x['error']:raise
    except:
        raise

>>> test()
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    test()
  File "<pyshell#19>", line 3, in test
    if x['error']:raise
NameError: name 'x' is not defined

原文由 Nouman 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题