try
/except
の概念を理解したところで、finally
節を追加することでさらに強力なエラー処理を行うことができます。finally
節は、try
ブロックとexcept
ブロックの後に配置します。そして、このfinally
節内のコードは例外が発生しようがしまいが、必ず実行されます。
基本的な構文は以下の通りです。
try:
# 例外が発生する可能性のあるコード
except 例外の種類:
# 例外が発生した場合に実行するコード
finally:
# 例外の有無に関わらず、最終的に必ず実行するコード
例えば、データベースとの接続を開いて操作を行うコードがあるとしましょう。何らかの理由で操作中にエラーが発生した場合でも、接続を必ず閉じる必要があります。これを保証するためにfinally
節を使います。
try:
db_connection = open_database_connection()
# データベースへの何らかの操作
except DatabaseError:
print("An error occurred")
finally:
db_connection.close() # これはエラーの有無に関わらず必ず実行されます
この例では、データベースへの接続を開いて何らかの操作を行います。もしDatabaseError
が発生すれば、エラーメッセージを表示します。そして、操作が成功しようが失敗しようが、finally
節のdb_connection.close()
が実行され、データベース接続は確実に閉じられます。
finally
節は、リソースのクリーンアップや後始末など、例外の有無にかかわらず実行する必要があるコードに対して非常に便利です。