尝试和除外都提出了例外。

时间:2015-09-18 04:55:13

标签: python finally try-except

def FancyDivide(list_of_numbers, index):
try:
    try:
        raise Exception("0")
    finally:
        denom = list_of_numbers[index]
        for i in range(len(list_of_numbers)):
            list_of_numbers[i] /= denom
except Exception, e:
    print e

当调用函数时,我得到以下输出。

FancyDivide([0, 2, 4], 0)
integer division or modulo by zero

在try代码中引发异常。最后还有一个例外。为什么在finally中发现异常并不是try中的异常。

1 个答案:

答案 0 :(得分:4)

来自documentation -

  

在离开try语句之前总是执行finally子句,无论是否发生了异常。 当try子句中发生异常且尚未由except子句处理时(或者它发生在except或else子句中),在执行finally子句后重新引发它。

(强调我的)

如上所述,异常 - Exception("0")只会在完成finally块后再次引发。但是因为finally块中发生了异常,所以它被引发而不是Exception("0")