【发布时间】:2015-08-19 09:59:07
【问题描述】:
我正在开发一个框架并为其编写扩展。
问题是我只需要为框架提出一个特定的Exception 类。
class FrameworkException(Exception):
我可以提出Exception,它是FrameworkException 的子类,框架将负责记录/报告异常。
现在,在我的插件中,我可以获得各种异常,比如ValueError。我可以以某种方式创建一个包含ValueError 的所有详细信息的FrameworkException 吗?
在Java中,我会做这样的事情,
catch (IOException e) {
throw new FrameworkException(e);
}
这样,原始异常e的所有细节都将被保留,包括像这样的message和stacktrace,
Exception in thread "main" FrameworkException: IOException: Custom Message
at com.Test.main(Test.java:115)
Caused by: IOException: Custom Message
at com.Test.main(Test.java:113)
在 Python 中是否有类似的可能?
我试过了,
except Exception as e:
raise FrameworkException(e)
但它丢失了原始回溯,只有消息。
顺便说一下,我正在使用 Python 2.7。
【问题讨论】:
-
很遗憾你正在使用 Python 2; Python 3 有它的
raise <exception> from <cause>。 -
@Evert,是的。但是他们在制作 3 时忘记了向后兼容性,所以我无法轻松切换...:(
标签: python error-handling exception-handling