カテゴリ: Python 更新日: 2025/12/12

Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方

Pythonのfinally文の使い方!例外発生時にも実行する処理
Pythonのfinally文の使い方!例外発生時にも実行する処理

先生と生徒の会話形式で理解しよう

生徒

「Pythonでエラーが起きたときにも必ず実行される処理ってあるんですか?プログラムが途中で止まると困ってしまいます。」

先生

「ありますよ。そのために使うのがfinally文です。例外が発生しても発生しなくても、最後に必ず実行される場所を作れる仕組みなんです。」

生徒

「必ず実行されるというのは便利ですね。どういうときに使うんですか?」

先生

「たとえばファイルを閉じたり、接続を切ったり、片付け作業を行いたいときに使うんです。実際の書き方を一緒に見ていきましょう。」

-

1. finally文とは?

1. finally文とは?
1. finally文とは?

Pythonのfinally文は、例外処理で使われる構文のひとつで、tryブロックの後に書くことで、エラーが起きても起きなくても必ず実行される部分を定義できます。これは「後片付け」や「必ず実行してほしい作業」を記述するのに最適な場所です。

たとえば、家で料理をするときに、途中で失敗しても台所の片付けは必ず必要ですよね。それと同じで、Pythonでもエラーが起きても最後にどうしても行いたい処理が存在します。その処理を書くのがfinallyです。

2. 基本的なfinally文の書き方

2. 基本的なfinally文の書き方
2. 基本的なfinally文の書き方

まずはPythonのtry-except-finally構文の基本の形を見てみましょう。基本的にはtryでエラーが起きるかもしれない処理を書き、exceptで例外を受け取り、finallyで必ず実行する処理を書きます。


try:
    value = int("abc")
except Exception as e:
    print("エラーが発生しました")
finally:
    print("最後に必ず実行される処理です")

このコードでは、文字列を数値に変換しようとしてエラーが発生しますが、finallyは必ず実行されます。例外の有無に関係なく動くので、終了処理を書く場所としてとても便利です。

3. ファイル処理でのfinallyの活用例

3. ファイル処理でのfinallyの活用例
3. ファイル処理でのfinallyの活用例

初心者にとって一番わかりやすいfinallyの使い方は、ファイル処理です。ファイルを開いたら、必ず閉じなければなりません。しかしプログラムの途中でエラーが発生すると、閉じる前に止まってしまいます。そのようなトラブルを防ぐためにfinallyを使います。


try:
    f = open("sample.txt", "r")
    data = f.read()
    print(data)
except Exception as e:
    print("読み込み中にエラーが発生しました")
finally:
    f.close()
    print("ファイルを閉じました")

このようにfinallyにファイルの後処理を書けば、エラーが起きてもファイルは確実に閉じられます。これは実際の開発でも非常によく使われるテクニックです。

4. ネットワーク接続やデータベース接続でも必須

4. ネットワーク接続やデータベース接続でも必須
4. ネットワーク接続やデータベース接続でも必須

ファイル処理に限らず、ネットワーク通信やデータベース接続などの「開いたら閉じる必要がある処理」ではfinallyが特に重要です。接続を閉じ忘れるとプログラムが重くなったり、通信エラーが出たり、他のユーザーに影響を与えたりします。

初心者のうちは実感しにくいかもしれませんが、プログラムは「開きっぱなしの状態」がトラブルのもとになります。そのため、後片付けを確実に行うfinallyは非常に大切です。

-

5. finallyだけを使う書き方も可能

5. finallyだけを使う書き方も可能
5. finallyだけを使う書き方も可能

実はtry-finallyだけで書くこともできます。例外をキャッチして処理したいわけではなく、最後に必ず実行したいだけのときに使えます。


try:
    print("処理を実行中")
finally:
    print("必ず実行されます")

このように、exceptを省略しても問題ありません。とにかく「最後に何かしてほしい」というときに便利な使い方です。

6. finallyはreturnよりも優先して実行される

6. finallyはreturnよりも優先して実行される
6. finallyはreturnよりも優先して実行される

Pythonのfinallyはとても強力で、なんと関数内のreturnよりも優先されます。つまり、関数が終了しようとしても、finallyが先に実行されます。


def sample():
    try:
        return "tryのreturn"
    finally:
        print("finallyが先に実行されます")

print(sample())

実行すると、まずfinallyのメッセージが表示され、その後にreturnの値が返されます。この性質を理解しておくと、処理の流れが読みやすくなるので覚えておくと役に立ちます。

7. 初心者がfinallyを使う際に意識すべきポイント

7. 初心者がfinallyを使う際に意識すべきポイント
7. 初心者がfinallyを使う際に意識すべきポイント

初心者のうちは、エラーが出るとプログラムが止まってしまい不安に感じることが多いと思います。しかしfinallyを使えば、たとえ途中でエラーが起きても必ず後処理が行われるため、安心してコードを書くことができます。

また、プログラムが複雑になるほど「必ず実行したい処理」が増えるため、finallyの重要性はどんどん高くなります。安全にプログラムを書けるようになるために、try-except-finally構文はPythonの初心者が最初に身につけておきたい基本スキルのひとつです。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
PHP
PHPのマルチバイト文字列を正しく扱う方法!初心者向けにmb_strlenとmb_substrをやさしく解説
New2
PHP
PHP の break, continue の使い方を完全解説!初心者でもわかるループ制御
New3
Python
Pythonで日本の元号を扱う方法を徹底解説!令和・平成の変換もバッチリ対応
New4
Python
Pythonの三項演算子とは?一行で条件分岐を記述する方法
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.2
Java&Spring記事人気No2
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonのライブラリとは?標準ライブラリとサードパーティライブラリの違いを初心者向けに解説!
No.5
Java&Spring記事人気No5
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.6
Java&Spring記事人気No6
PHP
PHPで画像ファイルをアップロードする方法を初心者向けに徹底解説!わかりやすい画像処理入門
No.7
Java&Spring記事人気No7
PHP
PHP の基本構文(開始タグ・コメント・インデント)を完全ガイド!初心者向け解説
No.8
Java&Spring記事人気No8
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
-
-