让我们说出像这样的代码
try:
objectToBeUsed = func1()
except:
objectToBeUsed = false
nextValue = func2(objectToBeUsed)
是否会执行最后一行,是否捕获到异常?我需要在这里使用finally
吗?
答案 0 :(得分:1)
是的,它会被执行。
但是,这可能正是为什么使用没有特定异常类的裸except
来捕获它的一个坏主意。在任何异常的情况下,您想要保持愉快的状态是很少见的。例如,例外可能是KeyboardInterrupt。
您可以捕获指出实际上确实要设置objectToBeUsed = False
的情况的特定异常,并且如果您无法处理它们,请让其他异常传播。
答案 1 :(得分:1)
finally
通常用于执行清理代码,无论是否引发了异常。如果我理解正确,调用func2()
是正常程序流程的一部分,不会被视为清理。所以在这种情况下你不应该使用finally
。
在此处阅读有关python异常处理的更多信息:https://docs.python.org/2/tutorial/errors.html