python:如果finally块引发异常,则从try块中恢复异常

说我有一些这样的代码:

try:
    try:
        raise Exception("in the try")
    finally:
        raise Exception("in the finally")
except Exception, e:
    print "try block failed: %s" % (e,)

输出为:

try block failed: in the finally

从打印声明的角度来看,有没有办法访问尝试中提出的异常,还是永远消失?

注意:我没有使用用例;这只是好奇心

最佳答案
我找不到任何关于这是否已经被返回并且没有Py2安装的信息,但是在Python 3中,e有一个名为e .__ context__的属性,这样:

try:
    try:
        raise Exception("in the try")
    finally:
        raise Exception("in the finally")
except Exception as e:
    print(repr(e.__context__))

得到:

Exception('in the try',)

根据PEP 3314,在__context__添加之前,关于原始异常的信息不可用.

转载注明原文:python:如果finally块引发异常,则从try块中恢复异常 - 代码日志