我有一些代码可以:
try:
result = func()
except StandardError as e:
result = e
如何检查result
是否包含异常?
使用 isinstance(result, Exception)
不起作用,因为异常是类,而不是实例,例如type(ValueError)
提供<type 'type'>
。
---编辑---
那是愚蠢的;虽然上面的代码是我使用func()
的正确方法,我的测试func()
正在做的是return ValueError
,而不是raise ValueError
。前者返回类,后者返回实例。所以问题没有描述。
答案 0 :(得分:9)
虽然我确信这是XY Problem,需要重新考虑您的设计逻辑,但这是对您当前问题的回答:isinstance
正常工作:
>>> try:
... int('a')
... except ValueError as e:
... result = e
...
>>> type(result)
<class 'ValueError'>
>>> isinstance(result, Exception)
True
您的问题是您正在测试ValueError
(该类),而不是e
(ValueError
的实例)。也许以下带有bool
的示例(子类为int
)会使这一点更清晰:
>>> isinstance(bool, int)
False
>>> isinstance(True, int)
True