Pythonのfinally文の使い方を完全ガイド!例外発生時にも必ず実行される処理を初心者向けに解説
生徒
「Python(パイソン)でエラーが起きたときでも、必ず動く処理って書けるんですか?」
先生
「できます。Pythonの例外処理(レイガイショリ)で使うfinally文(ファイナリーぶん)を使うと、エラーが起きても必ず実行される処理を書けます。」
生徒
「エラーが出ても必ずですか?どんなときに使うんですか?」
先生
「ファイルを閉じる処理や、後片付けのような場面でよく使います。では、基礎から順番に見ていきましょう。」
1. Pythonの例外処理とは?
Python(パイソン)の例外処理(レイガイショリ)とは、プログラムの実行中に問題(エラー)が起きたときに、プログラムが突然止まらないようにする仕組みです。たとえば、割り算で0で割ろうとしたり、存在しないファイルを開こうとしたときにエラーが発生します。
パソコン初心者の方は、家電のブレーカーを想像してください。何か問題が起きても安全に処理するための保険のような役割が、例外処理です。
2. try文とexcept文の基本構造
Pythonの例外処理では、まずtry文(トライぶん)とexcept文(エクセプトぶん)を使います。tryにはエラーが起きそうな処理を書き、exceptにはエラーが起きたときの対応を書きます。
try:
x = 10 / 0
print(x)
except:
print("エラーが発生しました")
エラーが発生しました
この例では、0で割る処理があるためエラーが発生し、exceptの中が実行されます。
3. finally文とは?必ず実行される処理
finally文(ファイナリーぶん)は、例外が発生しても、しなくても、必ず最後に実行される処理を書くための構文です。
現実の例でいうと、料理の後に必ず皿を洗うようなものです。料理が成功しても失敗しても、後片付けは必ず行いますよね。それと同じ役割をするのがfinally文です。
4. finally文の基本的な書き方
finally文は、tryとexceptの最後に書きます。構造はとてもシンプルです。
try:
print("処理を開始します")
num = int("abc")
except:
print("エラーが起きました")
finally:
print("この処理は必ず実行されます")
処理を開始します
エラーが起きました
この処理は必ず実行されます
このように、文字を数値に変換できずエラーが発生しても、finallyの中は必ず実行されます。
5. エラーが起きない場合でもfinallyは動く
finally文は、エラーが起きない場合でも必ず実行されます。ここが初心者の方にとって重要なポイントです。
try:
print("計算をします")
result = 10 + 5
print(result)
except:
print("エラーが発生しました")
finally:
print("処理を終了します")
計算をします
15
処理を終了します
正常に計算できた場合でも、最後にfinallyの処理が実行されていることが分かります。
6. ファイル操作とfinally文の相性
finally文は、ファイル操作と非常に相性が良いです。ファイルは使い終わったら必ず閉じる必要があります。
try:
file = open("sample.txt", "w")
file.write("Pythonのfinally文の練習")
except:
print("ファイル操作でエラーが発生しました")
finally:
file.close()
print("ファイルを閉じました")
ファイルを閉じました
このように書くことで、途中でエラーが起きてもファイルを確実に閉じることができます。
7. finally文がない場合に起きやすい問題
finally文を使わないと、エラー発生時に後処理が実行されず、問題が残ることがあります。たとえば、ファイルが開きっぱなしになったり、メモリを無駄に使い続ける原因になります。
初心者のうちは気づきにくいですが、小さなミスが積み重なると、大きなトラブルにつながるため、finally文を使う習慣はとても大切です。
8. finally文を使うときの注意点
finally文の中では、できるだけシンプルな処理を書くようにしましょう。なぜなら、ここでさらにエラーが起きると、原因の特定が難しくなるからです。
「必ず実行したい処理だけを書く」という意識を持つことで、読みやすく安全なPythonプログラムが書けるようになります。