python:从函数返回异常

Sub*_*beh 7 python exception

假设我有以下功能:

def test():
  ...
  if x['error']:
    raise
Run Code Online (Sandbox Code Playgroud)

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

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

def test():
  ...
  try:
    if x['error']:
      raise
  except:
    return
Run Code Online (Sandbox Code Playgroud)

如何测试特定值并在定义时返回异常,如果未定义则成功返回?

Bla*_*der 7

如果你想以字符串形式返回错误:

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

>>> test()
NameError("name 'x' is not defined",)
Run Code Online (Sandbox Code Playgroud)

如果你想让错误发生:

>>> 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
Run Code Online (Sandbox Code Playgroud)


Phi*_*rro 4

def test():
  ...
  if x.get('error'):
    raise
Run Code Online (Sandbox Code Playgroud)

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