try
エラー処理のためにandを使用するexcept
場合、明示的に呼び出すfinally
か、単に例外コードから離れた新しい行に移動するかは重要ですか? たとえば、以下の 2 つの関数が異なる結果を生成する状況はありますか?
#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
もう 1 つ指摘しておきたいのは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')