重複の可能性:
else の目的と最後に例外処理で
ステートメントにfinally
条項が存在する理由を理解したいと思います。try/except
私はそれが何をするかを理解していますが、それが言語の場所に値する場合、明らかに何かが欠けています。finally
具体的には、節をフィールドに書くことと、try/except
ステートメントの外に書くことの違いは何ですか?
重複の可能性:
else の目的と最後に例外処理で
ステートメントにfinally
条項が存在する理由を理解したいと思います。try/except
私はそれが何をするかを理解していますが、それが言語の場所に値する場合、明らかに何かが欠けています。finally
具体的には、節をフィールドに書くことと、try/except
ステートメントの外に書くことの違いは何ですか?
finally
スイートで何が起こっても、スイートは実行されることが保証さtry
れています。
ファイル、データベース接続などをクリーンアップするために使用します。
try:
file = open('frobnaz.txt', 'w')
raise ValueError
finally:
file.close()
os.path.remove('frobnaz.txt')
これは、例外ハンドラー(except
スイート)が例外をキャッチするかどうか、またはreturn
コードにステートメントがあるかどうかに関係なく当てはまります。
def foobar():
try:
return
finally:
print "finally is executed before we return!"
try
ループで/ステートメントを使用してから、またはのいずれかを使用finally
してループから抜け出し、スイートを実行します。すべての場合に実行されることが保証されています。continue
break
finally
句は常に実行されます。finally
これは、コードで例外タイプを見逃した場合に最適です。
ドキュメントを引用するには:
最終的に存在する場合は、「クリーンアップ」ハンドラーを指定します。try句が実行され、except句とelse句が含まれます。いずれかの句で例外が発生し、処理されない場合、例外は一時的に保存されます。finally節が実行されます。保存された例外がある場合は、finally節の最後で再発生します。finally節で別の例外が発生するか、returnまたはbreakステートメントを実行すると、保存された例外は失われます。例外情報は、finally節の実行中はプログラムで使用できません。