finally と else による後片付け
try-except に else と finally を加えると、成功・失敗・完了それぞれのタイミングで処理を定義できます。
1. else:エラーがなかった時だけ実行
def divide(a, b):
try:
result = a / b
except ZeroDivisionError:
print("エラー:0で割れません")
else:
print(f"成功:{a} ÷ {b} = {result}") # エラーなしの時だけ実行
divide(10, 2)
divide(10, 0)
▶ 出力結果
成功:10 ÷ 2 = 5.0 エラー:0で割れません
2. finally:必ず実行される後片付け
def read_file(path):
try:
f = open(path, "r", encoding="utf-8")
content = f.read()
print(f"読み込み成功:{len(content)}文字")
except FileNotFoundError:
print(f"エラー:{path} が見つかりません")
content = ""
finally:
print("ファイル操作を終了します") # 成功でも失敗でも実行
return content
read_file("existing.txt")
read_file("missing.txt")
▶ 出力結果
読み込み成功:XX文字 ファイル操作を終了します エラー:missing.txt が見つかりません ファイル操作を終了します
