检查对象是否是Exception类

los*_*ost -1 python

我有一些代码可以:

try:
    result = func()
except StandardError as e:
    result = e
Run Code Online (Sandbox Code Playgroud)

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

使用isinstance(result, Exception)不起作用,因为异常是一个类,而不是一个实例,例如type(ValueError)给出<type 'type'>.

---编辑---

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

bri*_*pck 9

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

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

你的问题是你正在测试ValueError(类),而不是e(a的实例ValueError).也许以下带有a bool(子类为an int)的示例将使这更清楚:

>>> isinstance(bool, int)
False
>>> isinstance(True, int)
True
Run Code Online (Sandbox Code Playgroud)