我正在研究一个框架并为其编写扩展。
问题是我只需提升特定类Exception
的框架。
class FrameworkException(Exception):
我可以提出一个Exception
,它是FrameworkException
的子类,框架将负责记录/报告异常。
现在,在我的插件中,我可以获得各种例外,让我们说ValueError
。我可以以某种方式创建FrameworkException
以及ValueError
的所有详细信息吗?
在Java中,我会做这样的事情,
catch (IOException e) {
throw new FrameworkException(e);
}
通过这种方式,原始异常e
的所有详细信息都将被保留,包括消息和 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 。
答案 0 :(得分:1)
在Python 2中,您可以使用原始回溯引发异常,因此您应该写下:
raise FrameworkException, FrameworkException(e), sys.exc_info()[2]
或切换到Python 3