检查对象是否是Exception类

时间:2016-12-15 17:42:41

标签: python

我有一些代码可以:

try:
    result = func()
except StandardError as e:
    result = e

如何检查result是否包含异常?

使用isinstance(result, Exception)不起作用,因为异常是类,而不是实例,例如type(ValueError)提供<type 'type'>

---编辑---

那是愚蠢的;虽然上面的代码是我使用func()的正确方法,我的测试func()正在做的是return ValueError,而不是raise ValueError。前者返回类,后者返回实例。所以问题没有描述。

1 个答案:

答案 0 :(得分:9)

虽然我确信这是XY Problem,需要重新考虑您的设计逻辑,但这是对您当前问题的回答:isinstance正常工作:

>>> try:
...     int('a')
... except ValueError as e:
...     result = e
...
>>> type(result)
<class 'ValueError'>
>>> isinstance(result, Exception)
True

您的问题是您正在测试ValueError(该类),而不是eValueError的实例)。也许以下带有bool的示例(子类为int)会使这一点更清晰:

>>> isinstance(bool, int)
False
>>> isinstance(True, int)
True