【发布时间】:2017-05-01 09:59:40
【问题描述】:
我有一些代码:
try:
result = func()
except StandardError as e:
result = e
如何检查result 是否包含异常?
使用 isinstance(result, Exception) 不起作用,因为异常是一个类,而不是一个实例,例如type(ValueError) 给<type 'type'>。
--- 编辑---
那太愚蠢了;虽然上面的代码是我如何使用func() 的正确提炼,但我的测试func() 所做的是return ValueError,而不是raise ValueError。前者返回类,后者返回一个实例。所以问题并不像描述的那样。
【问题讨论】:
-
嗯...你真的试过
isinstance(result, Exception)吗?对我有用,因为e是StandardError的实例,而不是StandardError本身的类。 -
你的代码为什么要这么做?
-
这对我来说似乎是一个 XY 问题:也许你可以退后一步告诉我们你想要完成什么?
-
我很想知道你想通过首先将两个不相关的东西之一存储在同一个变量中来实现什么,然后才很难弄清楚这两个东西中的哪一个存储在那里.
-
我建议您将代码设计得更简单,从而完全避免这个问题:设置
result=None并使用不同的名称,例如err = e来表示错误。然后你可以很容易地知道你是否有错误或结果:如果err is None那么没有错误并且结果是好的,否则你有一个错误。
标签: python