【发布时间】:2013-10-03 01:15:25
【问题描述】:
当使用try 和except 进行错误处理时,是显式调用finally 还是只是转到从异常代码中删除的新行是否重要?例如,在什么情况下,下面的两个函数会产生不同的结果?
#Function 1 with finally
def final(x):
try:
print(x*x)
except:
print("Error")
finally:
print("End Function")
#Function 2 with new line dedent
def dedent(x):
try:
print(x*x)
except:
print("Error")
print("End Function")
更新:
感谢finally 运行的解释,即使except 块中有错误。我想指出的另一件事是,即使您在 except 块中返回一个对象,finally 块也会运行。例如,即使在return 之后,下面的函数 3 也会打印,而函数 4 则不会。
#Function 3 with finally
def final(x):
try:
print(x*x)
except:
return 3
finally:
print("End Function 3")
#Function 4 with new line dedent
def dedent(x):
try:
print(x*x)
except:
return 3
print("End Function 4")
test1 = final('test')
test2 = dedent('test')
【问题讨论】:
-
你的例子很容易理解用法。看这个例子:stackoverflow.com/a/11552007/1628832
标签: python error-handling try-catch-finally