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節は、リソースのクリーンアップや後始末など、例外の有無にかかわらず実行する必要があるコードに対して非常に便利です。
