我是否可以使用另一个异常创建自定义异常(类似于"由Java引起的")

时间:2015-08-19 09:59:08

标签: python error-handling exception-handling

我正在研究一个框架并为其编写扩展。

问题是我只需提升特定类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

1 个答案:

答案 0 :(得分:1)

在Python 2中,您可以使用原始回溯引发异常,因此您应该写下:

raise FrameworkException, FrameworkException(e), sys.exc_info()[2]

或切换到Python 3