尝试之后的代码会被执行吗?

时间:2014-05-26 06:31:29

标签: python exception

让我们说出像这样的代码

try:
    objectToBeUsed = func1()
except:
    objectToBeUsed = false

nextValue = func2(objectToBeUsed)

是否会执行最后一行,是否捕获到异常?我需要在这里使用finally吗?

2 个答案:

答案 0 :(得分:1)

是的,它会被执行。

但是,这可能正是为什么使用没有特定异常类的裸except来捕获它的一个坏主意。在任何异常的情况下,您想要保持愉快的状态是很少见的。例如,例外可能是KeyboardInterrupt。

您可以捕获指出实际上确实要设置objectToBeUsed = False的情况的特定异常,并且如果您无法处理它们,请让其他异常传播。

答案 1 :(得分:1)

finally通常用于执行清理代码,无论是否引发了异常。如果我理解正确,调用func2()是正常程序流程的一部分,不会被视为清理。所以在这种情况下你不应该使用finally

在此处阅读有关python异常处理的更多信息:https://docs.python.org/2/tutorial/errors.html