使用try
andexcept
进行错误处理时,是否显式调用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
块中有错误。我想指出的另一件事是,finally
即使您在 except 块中返回一个对象,该块也会运行。例如,下面的函数 3 即使在return
函数 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')