可以"断言"用于检查函数中的特定异常?

时间:2017-12-22 21:38:23

标签: python python-2.7

可以使用Python assert检查函数中的特定异常吗?例如,如果我有一个我知道会引发KeyError的函数,可以assert检测到它吗?例如:

def get_value(x):
    lookup = {'one': 1}
    return lookup[x]

assert get_value('two') == KeyError

当我运行这个时,我只得到KeyError异常。 assert可以查看这样的内容吗?或者那不是assert用于什么?

1 个答案:

答案 0 :(得分:1)

请参阅:What is the use of "assert" in Python?

assert用于断言条件,表示验证已满足此条件,否则触发操作。 对于您的用例,您希望捕获异常,因此这是您想要的。

#!/usr/bin/env python
import sys
def get_value(x):
    lookup = {'one': 1}
    return lookup[x]

try:
  get_value('two')
except: # catch *all* exceptions
  e = sys.exc_info()
  print e

这将捕获异常并打印它。在这种特殊情况下,它将打印如下内容: (<type 'exceptions.KeyError'>, KeyError('two',), <traceback object at 0x102c71c20>)